<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6214778681897485490</id><updated>2024-03-19T06:34:55.252+03:00</updated><title type='text'>Alexander Kochurov developer&#39;s blog</title><subtitle type='html'>Here you can find some articles solutions, examples e.t.c.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://akochurov.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://akochurov.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>nwm</name><uri>http://www.blogger.com/profile/11905520968599349090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1k_sUBZqbUuFEhywN12bJYKXU7Gh0LjqQK8_wEdr2od_ky0hB_CT_PUmDL4qg-dZ2rhi-1fJlCYKLolN1Ic9ZJ1jrquKGZ4_dU0gxyABvz0ZRZlPPitUIaoyefm3Trg/s220/1.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>42</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6214778681897485490.post-1110287730733252012</id><published>2012-11-07T16:23:00.001+04:00</published><updated>2012-11-07T16:24:29.602+04:00</updated><title type='text'>Difference between IQueryable, ICollection, IList &amp; IDictionary interface</title><content type='html'>All of these interfaces inherit from &lt;b&gt;IEnumerable&lt;/b&gt;, which you should make sure you understand. That interface basically lets you use the class in a foreach statement (in C#).&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;ICollection&lt;/b&gt; is the most basic of the interfaces you listed. It&#39;s an enumerable interface that supports a Count and that&#39;s about it.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;IList&lt;/b&gt; is everything that ICollection is, but it also supports adding and removing items, retrieving items by index, etc. It&#39;s the most commonly-used interface for &quot;lists of objects&quot;, which is vague I know.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;IQueryable&lt;/b&gt; is an enumerable interface that supports LINQ. You can always create an IQueryable from an IList and use LINQ to Objects, but you also find IQueryable used for deferred execution of SQL statements in LINQ to SQL and LINQ to Entities.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;IDictionary&lt;/b&gt; is a different animal in the sense that it is a mapping of unique keys to values. It is also enumerable in that you can enumerate the key/value pairs, but otherwise it serves a different purpose than the others you listed.&lt;br /&gt;
&lt;br /&gt;
Thanks to &lt;a href=&quot;http://stackoverflow.com/a/4455507&quot;&gt;author&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://akochurov.blogspot.com/feeds/1110287730733252012/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6214778681897485490/1110287730733252012' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/1110287730733252012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/1110287730733252012'/><link rel='alternate' type='text/html' href='http://akochurov.blogspot.com/2012/11/difference-between-iqueryable.html' title='Difference between IQueryable, ICollection, IList &amp; IDictionary interface'/><author><name>nwm</name><uri>http://www.blogger.com/profile/11905520968599349090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1k_sUBZqbUuFEhywN12bJYKXU7Gh0LjqQK8_wEdr2od_ky0hB_CT_PUmDL4qg-dZ2rhi-1fJlCYKLolN1Ic9ZJ1jrquKGZ4_dU0gxyABvz0ZRZlPPitUIaoyefm3Trg/s220/1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6214778681897485490.post-7527232146352517191</id><published>2012-02-28T01:23:00.001+04:00</published><updated>2012-02-28T01:32:54.282+04:00</updated><title type='text'>JS CTypes FireFox 3+ DLL C development</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;h4&gt;




&lt;br /&gt;Разработка для JS CTypes FireFox 3+ DLL на языке C&lt;br /&gt;&lt;br /&gt;Рассмотрим, как решить данную задачу.&lt;/h4&gt;
&lt;br /&gt;&lt;b&gt;1. Выбор компилятора&lt;/b&gt;&lt;br /&gt;
&lt;div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;Сначала я взял компилятор Microsoft Visual C++ из среды разработки Visual Studio 2010. В результате, я получил рабочий код, но он не захотел работать на машинах, где не была установлена Microsoft Visual Studio. Из чего был сделан вывод, что студия наверняка при сборке использует ссылки на свои библиотеки, даже если тщательно в конфиге отключить всё что только возможно. В итоге, проект либо не собирался без этих ссылок, либо dll не работала на некоторых машинах. Конкретно у меня Firefox не хотел ее загружать на машине с Windows XP SP3, а постоянно выдавал ошибку &lt;b&gt;&quot;couldn&#39;t load the library&quot;&lt;/b&gt;. А также, эта dll с точно такой же ошибкой не хотела работать еще на одной машине с Windows 7 Prof 32bit. &lt;br /&gt;
&lt;br /&gt;
Вторым компилятором стал G++ из пакета &lt;a href=&quot;http://mingw.org/&quot;&gt;MinGw&lt;/a&gt;. Что и сыграло свою решающую роль.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;2. Разработка кода библиотеки на языке C&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
В результате, был написан простенький код на С:&lt;br /&gt;
&lt;blockquote&gt;
&lt;code&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: x-small;&quot;&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;
&lt;ol&gt;&lt;code&gt;&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: x-small;&quot;&gt;
&lt;li&gt;#include&amp;lt;windows.h&amp;gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;#ifndef DLL_API_H&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: blue;&quot;&gt;#define&lt;/span&gt; DLL_API_H&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;#ifdef MYDEF&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: blue;&quot;&gt;#define&lt;/span&gt; DLL_API __declspec(dllexport)&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: blue;&quot;&gt;#else&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: blue;&quot;&gt;#define&lt;/span&gt; DLL_API __declspec(dllimport)&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: blue;&quot;&gt;#endif&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;#ifdef __cplusplus&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: blue;&quot;&gt;extern&lt;/span&gt; &lt;span style=&quot;color: #a31515;&quot;&gt;&quot;C&quot;&lt;/span&gt; {&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: blue;&quot;&gt;#endif&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; DLL_API add(&lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; a, &lt;span style=&quot;color: blue;&quot;&gt;int&lt;/span&gt; b)&lt;/li&gt;
&lt;li&gt;{&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt;(a+b);&lt;/li&gt;
&lt;li&gt;}&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: green;&quot;&gt;// Parse incoming string value&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: green;&quot;&gt;// data - incoming value array to parse&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: green;&quot;&gt;// returns: current parsed value&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: blue;&quot;&gt;const&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;char&lt;/span&gt;* DLL_API Parse(&lt;span style=&quot;color: blue;&quot;&gt;const&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;char&lt;/span&gt;* data)&lt;/li&gt;
&lt;li&gt;{&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt; data;&lt;/li&gt;
&lt;li&gt;}&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;#ifdef __cplusplus&lt;/li&gt;
&lt;li&gt;}&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: blue;&quot;&gt;#endif&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: blue;&quot;&gt;#endif&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: green;&quot;&gt;// DLL_API_H&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)&lt;/li&gt;
&lt;li&gt;{&lt;/li&gt;
&lt;li&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;return&lt;/span&gt; TRUE;&lt;/li&gt;
&lt;li&gt;}&lt;/li&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/ol&gt;
&lt;code&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;* This source code was highlighted with &lt;a href=&quot;http://virtser.net/blog/post/source-code-highlighter.aspx&quot;&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;Source Code Highlighter&lt;/span&gt;&lt;/a&gt;.&lt;/span&gt;&lt;/code&gt;&lt;/blockquote&gt;
&lt;br /&gt;
Этот код сохраняем в файл &lt;b&gt;MyLib.c&lt;/b&gt; &lt;br /&gt;
&lt;br /&gt;
В коде отключено декорирование имен функций, что позволит вызывать из JS функции по их оригинальному имени, без учета декорирования.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;3. Компиляция и сборка DLL&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;gt; g++ -c -DMYDEF MyLib.c&lt;br /&gt;
&amp;gt; g++ -shared -nostdlib -o MyLib.dll MyLib.o -Wl,-e_DllMain@12&lt;br /&gt;
&lt;br /&gt;
Компиляция и сборка библиотеки выполняется без привязки&amp;nbsp;к&amp;nbsp;MSVCRT.DLL.&lt;br /&gt;
На выходе получим &lt;b&gt;MyLib.dll&lt;/b&gt;.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;b&gt;Вызов DLL из кода JS&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;span style=&quot;color: black; font-family: &#39;Courier New&#39;; font-size: x-small;&quot;&gt;Components.utils.import(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;resource://gre/modules/ctypes.jsm&quot;&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: green;&quot;&gt;/* Проверка x86 | x64 платформы */&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;var&lt;/span&gt; WinABI = ctypes.default_abi;&lt;br /&gt;&lt;span style=&quot;color: blue;&quot;&gt;if&lt;/span&gt; (ctypes.size_t.size !== 8){ WinABI = ctypes.winapi_abi; }&lt;br /&gt;&lt;br /&gt;AddonManager.getAddonByID(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;test@jsctypes.com&quot;&lt;/span&gt;, &lt;span style=&quot;color: blue;&quot;&gt;function&lt;/span&gt;(addon)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;var&lt;/span&gt; libcPath = addon.getResourceURI(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;components/MyLib.dll&quot;&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;if&lt;/span&gt; (libcPath instanceof Components.interfaces.nsIURI)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;var&lt;/span&gt; libc = ctypes.open(libcPath.path);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;var&lt;/span&gt; libc = ctypes.open(libc);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: green;&quot;&gt;/* import a function */&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;var&lt;/span&gt; puts = libc.declare(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;add&quot;&lt;/span&gt;, &lt;span style=&quot;color: green;&quot;&gt;/* function name */&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WinABI, &lt;span style=&quot;color: green;&quot;&gt;/* call ABI */&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctypes.int32_t, &lt;span style=&quot;color: green;&quot;&gt;/* return type */&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctypes.int32_t, &lt;span style=&quot;color: green;&quot;&gt;/* argument type */&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ctypes.int32_t &lt;span style=&quot;color: green;&quot;&gt;/* argument type */&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;var&lt;/span&gt; ret = puts(1,2);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(&lt;span style=&quot;color: #a31515;&quot;&gt;&quot;1+2=&quot;&lt;/span&gt;+ret);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;* This source code was highlighted with &lt;a href=&quot;http://virtser.net/blog/post/source-code-highlighter.aspx&quot;&gt;&lt;span style=&quot;color: grey; font-size: xx-small;&quot;&gt;Source Code Highlighter&lt;/span&gt;&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
В коде также выполняется проверка той платформы, на которой запускается код: x86 или x64. &lt;br /&gt;
В результате мы получили библиотеку, которая не зависит от наличия MSVCRT.DLL, не зависит от версии FireFox, и, что главное, ее можно будет без труда собрать под Linux.&lt;br /&gt;
&lt;br /&gt;
Пример вызова кода JS был взят &lt;a href=&quot;http://stackoverflow.com/questions/9152142/mozilla-use-a-c-dll-with-js-ctypes&quot;&gt;тут&lt;/a&gt;&amp;nbsp;и немного доработан.&lt;br /&gt;
Статья основана на следующей &lt;a href=&quot;http://stackoverflow.com/questions/9348604/build-a-dll-to-be-used-by-mozilla-js-ctypes&quot;&gt;публикации&lt;/a&gt;.&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akochurov.blogspot.com/feeds/7527232146352517191/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6214778681897485490/7527232146352517191' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/7527232146352517191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/7527232146352517191'/><link rel='alternate' type='text/html' href='http://akochurov.blogspot.com/2012/02/js-ctypes-firefox-3-dll-c-development.html' title='JS CTypes FireFox 3+ DLL C development'/><author><name>nwm</name><uri>http://www.blogger.com/profile/11905520968599349090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1k_sUBZqbUuFEhywN12bJYKXU7Gh0LjqQK8_wEdr2od_ky0hB_CT_PUmDL4qg-dZ2rhi-1fJlCYKLolN1Ic9ZJ1jrquKGZ4_dU0gxyABvz0ZRZlPPitUIaoyefm3Trg/s220/1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6214778681897485490.post-429321144112139198</id><published>2012-01-17T13:17:00.002+04:00</published><updated>2012-01-17T13:17:41.674+04:00</updated><title type='text'>Redgate &amp; SQL Server 2008 R2 Installation</title><content type='html'>Столкнулся с проблемой: решил попробовать утилиты от Redgate (утилиты для работы с данными SQL Server, кстати, очень понравилось). Но сегодня столкнулся с проблемой: при попытке обновить SQL Server 2008 до версии 2008 R2 получил ошибку в момент установки: 
Sql2005SsmsExpressFacet.
Checks whether SQL Server 2005 Express Tools are installed.
The SQL Server 2005 Express Tools are installed. To continue, remove the SQL Server 2005 Express Tools.
В результате, у меня не установилась Management Studio.

Оказывается, утилиты Redgate ставят с собой этот же модуль, только от 2005 SQL Server.
Чтобы решить проблему, нужно переименовать ключ реестра
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90\Tools\ShellSEM -&gt;
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90\Tools\ShellSEM.old
и установка SQL Server 2008 R2 завершается успешно.</content><link rel='replies' type='application/atom+xml' href='http://akochurov.blogspot.com/feeds/429321144112139198/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6214778681897485490/429321144112139198' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/429321144112139198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/429321144112139198'/><link rel='alternate' type='text/html' href='http://akochurov.blogspot.com/2012/01/redgate-sql-server-2008-r2-installation.html' title='Redgate &amp; SQL Server 2008 R2 Installation'/><author><name>nwm</name><uri>http://www.blogger.com/profile/11905520968599349090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1k_sUBZqbUuFEhywN12bJYKXU7Gh0LjqQK8_wEdr2od_ky0hB_CT_PUmDL4qg-dZ2rhi-1fJlCYKLolN1Ic9ZJ1jrquKGZ4_dU0gxyABvz0ZRZlPPitUIaoyefm3Trg/s220/1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6214778681897485490.post-2861854717961995852</id><published>2011-12-30T16:22:00.000+04:00</published><updated>2011-12-30T16:23:30.576+04:00</updated><title type='text'>С наступающим Новым годом!</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYOlt2H3A-jhLR9LdI7W71kKWAggZf4l54NuUH6BZAlHDO5y2tm8hDZ0nve37DpBlXH4_IxhB7YYrcB1UlQRNBp8qfBvShsEXnNf-T_AZtsHPG6uTznQlqlICN7D2gqp5dqFNUMIb3mwc/s1600/290.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear:left; float:left;margin-right:1em; margin-bottom:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;320&quot; width=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYOlt2H3A-jhLR9LdI7W71kKWAggZf4l54NuUH6BZAlHDO5y2tm8hDZ0nve37DpBlXH4_IxhB7YYrcB1UlQRNBp8qfBvShsEXnNf-T_AZtsHPG6uTznQlqlICN7D2gqp5dqFNUMIb3mwc/s320/290.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

Друзья!
Поздравляю всех Вас с наступающим Новым годом!
Желаю счастья, успехов и здоровья!
Пусть Новый год принесет всё то, что Вы от него ждёте!</content><link rel='replies' type='application/atom+xml' href='http://akochurov.blogspot.com/feeds/2861854717961995852/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6214778681897485490/2861854717961995852' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/2861854717961995852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/2861854717961995852'/><link rel='alternate' type='text/html' href='http://akochurov.blogspot.com/2011/12/blog-post.html' title='С наступающим Новым годом!'/><author><name>nwm</name><uri>http://www.blogger.com/profile/11905520968599349090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1k_sUBZqbUuFEhywN12bJYKXU7Gh0LjqQK8_wEdr2od_ky0hB_CT_PUmDL4qg-dZ2rhi-1fJlCYKLolN1Ic9ZJ1jrquKGZ4_dU0gxyABvz0ZRZlPPitUIaoyefm3Trg/s220/1.JPG'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYOlt2H3A-jhLR9LdI7W71kKWAggZf4l54NuUH6BZAlHDO5y2tm8hDZ0nve37DpBlXH4_IxhB7YYrcB1UlQRNBp8qfBvShsEXnNf-T_AZtsHPG6uTznQlqlICN7D2gqp5dqFNUMIb3mwc/s72-c/290.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6214778681897485490.post-2992762559667389704</id><published>2011-12-21T17:35:00.001+04:00</published><updated>2011-12-21T17:35:57.286+04:00</updated><title type='text'>C#: Image in DataGridViewImageCell (Картинка в столбце DataGridView)</title><content type='html'>&lt;p&gt;&lt;font face=&quot;Verdana&quot; color=&quot;#000000&quot;&gt;Если Вы хотите создать столбец в DataGridView, где будут отображаться разные значки, в зависимости от содержимого каждой строки, это можно сделать следующим образом:&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;Verdana&quot; color=&quot;#000000&quot;&gt;В приведенном примере столбец UINState содержит Guid, по которому выполняется проверка статуса строки&lt;/font&gt;&lt;/p&gt;&lt;p&gt;private void gvList_CellFormatting(object sender, &lt;br /&gt;&amp;nbsp; DataGridViewCellFormattingEventArgs e)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; if (e.ColumnIndex.Equals(0))&lt;br /&gt;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; setDataGridViewImageStatus(sender, e);&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;private void setDataGridViewImageStatus(object sender, &lt;br /&gt;DataGridViewCellFormattingEventArgs e)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; string CheckColumnName = &amp;quot;UINState&amp;quot;;&lt;br /&gt;&amp;nbsp; string colName =&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp; ((DataGridView)sender).Columns[CheckColumnName].Name.ToString();&lt;br /&gt;&amp;nbsp; e.Value = EntityPaint.GetStateImage(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ((DataGridView)sender).Rows[e.RowIndex].Cells[colName].Value.ToString());&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;/// &amp;lt;summary&amp;gt;&lt;br /&gt;/// Метод устанавливает статус-картинку для текущей записи&lt;br /&gt;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;/// &amp;lt;param name=&amp;quot;UINState&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;br /&gt;static public Image GetStateImage(string UINState)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Image Res = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; switch (UINState.ToLower())&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case &amp;quot;364fb7ec-8fc5-48f1-a25c-8888824e6a97&amp;quot;: // Статус 1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Res = global::MyApp.Properties.Resources.bullet_ball_glass_yellow;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case &amp;quot;2a030090-d85f-4f8c-bb92-7a79500089c5&amp;quot;: // Статус 2&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Res = global:: MyApp.Properties.Resources.bullet_ball_glass_green;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; case &amp;quot;649fbdf3-3255-46cc-b8cc-2fb86a3918a5&amp;quot;: // Статус 3&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Res = global:: MyApp.Properties.Resources.bullet_ball_glass_red;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; default:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Res = global:: MyApp.Properties.Resources.bullet_ball_glass_grey;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return Res;&lt;br /&gt;}&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://akochurov.blogspot.com/feeds/2992762559667389704/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6214778681897485490/2992762559667389704' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/2992762559667389704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/2992762559667389704'/><link rel='alternate' type='text/html' href='http://akochurov.blogspot.com/2011/12/c-image-in-datagridviewimagecell.html' title='C#: Image in DataGridViewImageCell (Картинка в столбце DataGridView)'/><author><name>nwm</name><uri>http://www.blogger.com/profile/11905520968599349090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1k_sUBZqbUuFEhywN12bJYKXU7Gh0LjqQK8_wEdr2od_ky0hB_CT_PUmDL4qg-dZ2rhi-1fJlCYKLolN1Ic9ZJ1jrquKGZ4_dU0gxyABvz0ZRZlPPitUIaoyefm3Trg/s220/1.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6214778681897485490.post-7661895816962227862</id><published>2011-12-21T17:34:00.002+04:00</published><updated>2011-12-21T17:34:46.867+04:00</updated><title type='text'>Выполнить SQL-файл в C#</title><content type='html'>&lt;p&gt;За основу взята статья на &lt;a href=&quot;http://www.sql.ru/forum/actualthread.aspx?tid=673100&quot;&gt;форуме&amp;nbsp;SQL.RU&lt;/a&gt;&lt;/p&gt;&lt;p&gt;/// &amp;lt;summary&amp;gt;&lt;br /&gt;/// Выполнение файла SQL-сценария&lt;br /&gt;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;/// &amp;lt;param name=&amp;quot;connectionString&amp;quot;&amp;gt;Строка соединения&amp;lt;/param&amp;gt;&lt;br /&gt;/// &amp;lt;param name=&amp;quot;CommandTimeOut&amp;quot;&amp;gt;Тайм-аут выполнения команды&amp;lt;/param&amp;gt;&lt;br /&gt;/// &amp;lt;param name=&amp;quot;scriptFileName&amp;quot;&amp;gt;Имя файла сценария&amp;lt;/param&amp;gt;&lt;br /&gt;public bool ExecuteSQLScript(string connectionString, int CommandTimeOut, string scriptFileName)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!File.Exists(scriptFileName))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ErrorMessage += &amp;quot;Файл &amp;quot; + scriptFileName + &amp;quot; не найден.\r\n Продолжение невозможно.\r\n&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // загружаем скрипт&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String script = File.ReadAllText(scriptFileName, Encoding.GetEncoding(1251));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // делим скрипт на части&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String []separators = {&amp;quot;GO\r\n&amp;quot;};&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String[] idents = script.Split(separators, StringSplitOptions.None);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int n_idents = idents.Length;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // выполняем части&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String str_sql = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; using (SqlConnection sqlConn = new SqlConnection(connectionString))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //SqlConnection sqlConn = new SqlConnection(connectionString);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sqlConn.Open();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SqlCommand Command = sqlConn.CreateCommand();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SqlTransaction transaction;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Start a local transaction.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; transaction = sqlConn.BeginTransaction(&amp;quot;LoadSQLTransaction&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Command.Connection = sqlConn;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Command.Transaction = transaction;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Command.CommandTimeout = CommandTimeOut;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; n_idents - 1; i++)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; str_sql = idents[i];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!String.IsNullOrEmpty(str_sql))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Command.CommandText = str_sql;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Command.ExecuteNonQuery();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Attempt to commit the transaction.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; transaction.Commit();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (Exception ex)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ErrorMessage += String.Format(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;quot;Ошибка выполнения скрипта {0}.\r\nНе выполнен фрагмент:\r\n***{1}***\r\nИсключение: {2}\r\n&amp;quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; scriptFileName, str_sql, ex.Message);&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Попытка откатить транзакцию&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; transaction.Rollback();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (Exception ex2)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Если возникла ошибка при откате транзакции&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ErrorMessage += String.Format(&amp;quot;Rollback Exception Type: {0}\r\n&amp;quot;, ex2.GetType());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ErrorMessage += String.Format(&amp;quot;Message: {0}\r\n&amp;quot;, ex2.Message);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;}&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://akochurov.blogspot.com/feeds/7661895816962227862/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6214778681897485490/7661895816962227862' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/7661895816962227862'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/7661895816962227862'/><link rel='alternate' type='text/html' href='http://akochurov.blogspot.com/2011/12/sql-c.html' title='Выполнить SQL-файл в C#'/><author><name>nwm</name><uri>http://www.blogger.com/profile/11905520968599349090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1k_sUBZqbUuFEhywN12bJYKXU7Gh0LjqQK8_wEdr2od_ky0hB_CT_PUmDL4qg-dZ2rhi-1fJlCYKLolN1Ic9ZJ1jrquKGZ4_dU0gxyABvz0ZRZlPPitUIaoyefm3Trg/s220/1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6214778681897485490.post-1917896200146126031</id><published>2011-12-21T17:33:00.001+04:00</published><updated>2011-12-21T17:33:32.577+04:00</updated><title type='text'>C#: установка прав доступа к ветке реестра</title><content type='html'>&lt;p&gt;/// &amp;lt;summary&amp;gt;&lt;br /&gt;/// Проверка доступа к заданной ветке реестра&lt;br /&gt;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;br /&gt;public bool checkAccess()&lt;br /&gt;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; string registryKey = &amp;quot;Software\\MyApp&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; string TrustedUser = &amp;quot;SYSTEM&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(registryKey, true);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var rs = key.GetAccessControl();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rs.SetAccessRule(new System.Security.AccessControl.RegistryAccessRule&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TrustedUser,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Security.AccessControl.RegistryRights.FullControl,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Security.AccessControl.AccessControlType.Allow)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; key.SetAccessControl(rs);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch { return false; }&lt;br /&gt;}&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://akochurov.blogspot.com/feeds/1917896200146126031/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6214778681897485490/1917896200146126031' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/1917896200146126031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/1917896200146126031'/><link rel='alternate' type='text/html' href='http://akochurov.blogspot.com/2011/12/c_587.html' title='C#: установка прав доступа к ветке реестра'/><author><name>nwm</name><uri>http://www.blogger.com/profile/11905520968599349090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1k_sUBZqbUuFEhywN12bJYKXU7Gh0LjqQK8_wEdr2od_ky0hB_CT_PUmDL4qg-dZ2rhi-1fJlCYKLolN1Ic9ZJ1jrquKGZ4_dU0gxyABvz0ZRZlPPitUIaoyefm3Trg/s220/1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6214778681897485490.post-3115871203051333247</id><published>2011-12-21T17:32:00.002+04:00</published><updated>2011-12-21T17:32:39.059+04:00</updated><title type='text'>C#: установка прав доступа к папке на диске для заданного пользователя</title><content type='html'>&lt;p&gt;/// &amp;lt;summary&amp;gt;&lt;br /&gt;/// Установка прав доступа к&amp;nbsp;папке на диске&amp;nbsp;для заданного пользователя&lt;br /&gt;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;/// &amp;lt;param name=&amp;quot;Dir&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;public bool checkAccess(string DirectoryName)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; string TrustedUser = &amp;quot;SYSTEM&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!checkDir(DirectoryName)) return false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var ds = Directory.GetAccessControl(DirectoryName);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ds.AddAccessRule(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new System.Security.AccessControl.FileSystemAccessRule(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TrustedUser,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Security.AccessControl.FileSystemRights.Modify,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Security.AccessControl.InheritanceFlags.ObjectInherit,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Security.AccessControl.PropagationFlags.NoPropagateInherit,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Security.AccessControl.AccessControlType.Allow)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Directory.SetAccessControl(DirectoryName, ds);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch { return false; }&lt;br /&gt;}&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://akochurov.blogspot.com/feeds/3115871203051333247/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6214778681897485490/3115871203051333247' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/3115871203051333247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/3115871203051333247'/><link rel='alternate' type='text/html' href='http://akochurov.blogspot.com/2011/12/c_3740.html' title='C#: установка прав доступа к папке на диске для заданного пользователя'/><author><name>nwm</name><uri>http://www.blogger.com/profile/11905520968599349090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1k_sUBZqbUuFEhywN12bJYKXU7Gh0LjqQK8_wEdr2od_ky0hB_CT_PUmDL4qg-dZ2rhi-1fJlCYKLolN1Ic9ZJ1jrquKGZ4_dU0gxyABvz0ZRZlPPitUIaoyefm3Trg/s220/1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6214778681897485490.post-4342015074278877613</id><published>2011-12-21T17:31:00.000+04:00</published><updated>2011-12-21T17:31:05.050+04:00</updated><title type='text'>C#: как создать COM</title><content type='html'>&lt;p&gt;Рассмотрим как создать COM-объект из C# в среде .NET&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Решение&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;1. Определить интерфейс для класса, описать методы, которые будут реализованы в нашем классе. Создать GUID-ды утилитой &lt;strong&gt;guidgen.exe&lt;/strong&gt;, которая находится по умолчанию в папке &amp;quot;C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\guidgen.exe&amp;quot;.&lt;/p&gt;&lt;p&gt;[Guid(&amp;quot;01D10028-A89D-47ee-8048-C27B6DD4BE63&amp;quot;)]&lt;br /&gt;public interface IMyClass&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [DispId(1)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; void HelloWorld(string mymessage);&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;2. Определить интерфейс для COM событий.&lt;/p&gt;&lt;p&gt;// Events &lt;br /&gt;[Guid(&amp;quot;5FAC6B03-6D95-46ed-A3C1-B0DBEE34D022&amp;quot;),&lt;br /&gt;InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]&lt;br /&gt;public interface IMyEvents&lt;br /&gt;{&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;3. Описать класс, с реализующий интерфейсы.&lt;/p&gt;&lt;p&gt;/// &amp;lt;summary&amp;gt;&lt;br /&gt;/// Мой класс&lt;br /&gt;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;[Guid(&amp;quot;349988BC-2594-46cf-BE83-1F09C25617F3&amp;quot;),&lt;br /&gt;ClassInterface(ClassInterfaceType.None),&lt;br /&gt;ComSourceInterfaces(typeof(IMyEvents))]&lt;br /&gt;public class MyClass : IMyClass&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// Конструктор&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;/summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public MyClass()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// Привет!&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// &amp;lt;/summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void HelloWorld(string mymessage)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MessageBox.Show((mymessage.Equals(String.Empty) ? &amp;quot;Привет!&amp;quot; : &amp;quot;Привет &amp;quot; + mymessage), &amp;quot;Тест библиотека&amp;quot;, MessageBoxButtons.OK, MessageBoxIcon.Information);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;4.&amp;nbsp;Пометить сборку как COM-импортируемую: на закладке свойств проекта&amp;nbsp;включить в разделе&amp;nbsp;Build&amp;nbsp;флаг&amp;nbsp;Register for COM interop.&lt;/p&gt;&lt;p&gt;5. Подписать сборку уникальными именем (StrongName).&amp;nbsp;На&amp;nbsp;закладке&amp;nbsp;свойств проекта: Properties - Signing - Sign the Assembly - далее, нужно указать имя файла ключа. Пароль указывать не обязательно. Будет автоматически создан файл *.snk, в данном случае, было указано имя TesLib1.snk&lt;/p&gt;&lt;p&gt;6. В файле AssemblyInfo.cs нужно указать параметр, содержащий имя файла подписи:&lt;/p&gt;&lt;p&gt;&lt;font size=&quot;2&quot;&gt;[assembly: AssemblyKeyFile(&amp;quot;TesLib1.snk&amp;quot;)]&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size=&quot;2&quot;&gt;7. Откомпилировать нашу сборку и получим библиотеку *.dll готовую для регистрации в системе как COM-объект.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size=&quot;2&quot;&gt;8. Зарегистрировать в системе библиотеку&amp;nbsp;с помощью утилиты &lt;strong&gt;regasm.exe&lt;/strong&gt;, которая находится по умолчанию&amp;nbsp;в папке&amp;nbsp;&amp;quot;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe&amp;quot;. Для регистрации нужно в консоли выполнить команду:&lt;/font&gt;&lt;/p&gt;&lt;p&gt;RegAsm.exe TestLib1.dll&lt;/p&gt;&lt;p&gt;В завершение, можно проверить работу нашего COM-объекта с помощью простого HTA-приложения, которое находится в папке bin доступного для загрузки&amp;nbsp;&lt;a href=&quot;http://www.sqlland.ru/downloads/TestLib1.rar&quot;&gt;&lt;strong&gt;примера&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Я хочу выразить благодарность Shripad Kulkarni, по мотивам &lt;a href=&quot;http://www.csharphelp.com/archives/archive281.html&quot;&gt;статьи&lt;/a&gt; которого я написал эту заметку.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://akochurov.blogspot.com/feeds/4342015074278877613/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6214778681897485490/4342015074278877613' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/4342015074278877613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/4342015074278877613'/><link rel='alternate' type='text/html' href='http://akochurov.blogspot.com/2011/12/c-com.html' title='C#: как создать COM'/><author><name>nwm</name><uri>http://www.blogger.com/profile/11905520968599349090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1k_sUBZqbUuFEhywN12bJYKXU7Gh0LjqQK8_wEdr2od_ky0hB_CT_PUmDL4qg-dZ2rhi-1fJlCYKLolN1Ic9ZJ1jrquKGZ4_dU0gxyABvz0ZRZlPPitUIaoyefm3Trg/s220/1.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6214778681897485490.post-2936954215984832433</id><published>2011-12-21T17:29:00.001+04:00</published><updated>2011-12-21T17:29:59.581+04:00</updated><title type='text'>C#: как прочитать бинарный файл (пример на C#)</title><content type='html'>&lt;p&gt;Предположим, есть некая система, написана она была не важно на чем, но хранит она данные в бинарных файлах собственной структуры. А вам нужно написать новую систему, которая сможет прочитать эти файлы, а потом использовать информацию в своих целях. &lt;/p&gt;&lt;p&gt;/// Формат файла (побайтно)&lt;br /&gt;/// 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; длина строки идентификатора примеси (0x5)&lt;br /&gt;/// 1..5&amp;nbsp;&amp;nbsp;&amp;nbsp; строковое значение (MyString)&lt;br /&gt;/// 6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; длина строки названия (Name)&lt;br /&gt;/// 7..38&amp;nbsp;&amp;nbsp; название (Name)&lt;br /&gt;/// 39..46&amp;nbsp; значение типа Double&lt;br /&gt;/// 47..48&amp;nbsp; значение типа Word&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Вот пример как это сделать:&lt;/p&gt;&lt;p&gt;/// Преобразует набор байт в ASCII строку&lt;br /&gt;/// &amp;quot;buffer&amp;quot; - Вектор байт&lt;br /&gt;/// &amp;quot;byteIndex&amp;quot; - Первый байт&lt;br /&gt;/// &amp;quot;byteCount&amp;quot; - Количество байт&lt;br /&gt;/// на выходе строка&lt;/p&gt;&lt;p&gt;public string HexToString(byte[] buffer, int byteIndex, int byteCount)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (byteCount.Equals(0))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return String.Empty;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; char[] chars = new char[byteCount];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Decoder d = Encoding.GetEncoding(866).GetDecoder();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int charLen = d.GetChars(buffer, byteIndex, byteCount, chars, 0);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; StringBuilder sb = new StringBuilder(charLen, byteCount);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (char c in chars)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sb.Append(c);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return sb.ToString().Trim();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;/// Импорт бинарного файла в динамический массив&lt;br /&gt;public ArrayList ImportM1(string fileName)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ArrayList Res = new ArrayList();&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using (FileStream input = File.OpenRead(fileName))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; byte[] buffer = new byte[55]; // 55 байт - длина одной записи в файле&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int read;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Читать строки по 55 байт&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while ((read = input.Read(buffer, 0, buffer.Length)) &amp;gt; 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyData md = new MattData();&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; md.MyString = HexToString(buffer, 1, 5);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; md.Name = HexToString(buffer, 7, Convert.ToInt32(buffer[6]));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; md.MyDouble = BitConverter.ToDouble(buffer, 39);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; md.MyWord = BitConverter.ToUInt16(buffer, 47);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Res.Add(md);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (Exception ex)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ErrorMessage = String.Format(&amp;quot;Ошибка импорта файла {0}: {1}&amp;quot;, fileName, ex.Message);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (Exception ex)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ErrorMessage = String.Format(&amp;quot;Ошибка импорта файла {0}: {1}&amp;quot;, fileName, ex.Message);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return Res;&lt;br /&gt;}&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://akochurov.blogspot.com/feeds/2936954215984832433/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6214778681897485490/2936954215984832433' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/2936954215984832433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/2936954215984832433'/><link rel='alternate' type='text/html' href='http://akochurov.blogspot.com/2011/12/c-c.html' title='C#: как прочитать бинарный файл (пример на C#)'/><author><name>nwm</name><uri>http://www.blogger.com/profile/11905520968599349090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1k_sUBZqbUuFEhywN12bJYKXU7Gh0LjqQK8_wEdr2od_ky0hB_CT_PUmDL4qg-dZ2rhi-1fJlCYKLolN1Ic9ZJ1jrquKGZ4_dU0gxyABvz0ZRZlPPitUIaoyefm3Trg/s220/1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6214778681897485490.post-5203545666857415741</id><published>2011-12-21T17:24:00.001+04:00</published><updated>2011-12-21T17:24:16.387+04:00</updated><title type='text'>C# EF Error: System.Data.SqlClient.SqlException: Invalid column name &#39;Discriminator&#39;</title><content type='html'>&lt;div style=&quot;margin: 0px 15px !important; padding: 0px; font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 10px; background-color: #ffffff&quot;&gt;&lt;div style=&quot;color: #333333; line-height: 16px; font-family: Arial,Helvetica,sans-serif; font-size: 13px&quot;&gt;В проекте используется Entity Framework Code First.&lt;/div&gt;&lt;div style=&quot;color: #333333; line-height: 16px; font-family: Arial,Helvetica,sans-serif; font-size: 13px&quot;&gt;Если начинает возникать ошибка&amp;nbsp;System.Data.SqlClient.SqlException: Invalid column name &amp;#39;Discriminator&amp;#39;, значит, возможно, где-то был создан класс, унаследованный от класса, для которого настроен Mapping.&amp;nbsp;&lt;/div&gt;&lt;div style=&quot;color: #333333; line-height: 16px; font-family: Arial,Helvetica,sans-serif; font-size: 13px&quot;&gt;Этому классу нужно добавить атрибут [NotMapped]. &lt;br /&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://akochurov.blogspot.com/feeds/5203545666857415741/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6214778681897485490/5203545666857415741' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/5203545666857415741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/5203545666857415741'/><link rel='alternate' type='text/html' href='http://akochurov.blogspot.com/2011/12/c-ef-error-systemdatasqlclientsqlexcept.html' title='C# EF Error: System.Data.SqlClient.SqlException: Invalid column name &#39;Discriminator&#39;'/><author><name>nwm</name><uri>http://www.blogger.com/profile/11905520968599349090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1k_sUBZqbUuFEhywN12bJYKXU7Gh0LjqQK8_wEdr2od_ky0hB_CT_PUmDL4qg-dZ2rhi-1fJlCYKLolN1Ic9ZJ1jrquKGZ4_dU0gxyABvz0ZRZlPPitUIaoyefm3Trg/s220/1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6214778681897485490.post-4564115640220044173</id><published>2011-12-21T17:23:00.001+04:00</published><updated>2011-12-21T17:23:36.653+04:00</updated><title type='text'>C# WinForms: разработка UserControl, ошибка сериализации</title><content type='html'>&lt;p&gt;Иногда возникает ситуация, когда при разработке UserControl-а студия выдает ошику: класс такой-то не помечен как сериализуемый. &lt;/p&gt;&lt;p&gt;И при этом, нельзя сохранить изменения в контроле - студия эти действия блокирует. &lt;/p&gt;&lt;p&gt;Всё дело в том, что студия пытается для всех классов, которые указаны в свойстве Вашего UserControl-а создать объекты этих свойств для отображения их в дизайнере. &lt;/p&gt;&lt;p&gt;А ей это сделать не удается.&lt;/p&gt;&lt;p&gt;Решение - такие свойства контрола&amp;nbsp;нужно пометить атрибутом:&lt;/p&gt;&lt;p&gt;[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://akochurov.blogspot.com/feeds/4564115640220044173/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6214778681897485490/4564115640220044173' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/4564115640220044173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/4564115640220044173'/><link rel='alternate' type='text/html' href='http://akochurov.blogspot.com/2011/12/c-winforms-usercontrol.html' title='C# WinForms: разработка UserControl, ошибка сериализации'/><author><name>nwm</name><uri>http://www.blogger.com/profile/11905520968599349090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1k_sUBZqbUuFEhywN12bJYKXU7Gh0LjqQK8_wEdr2od_ky0hB_CT_PUmDL4qg-dZ2rhi-1fJlCYKLolN1Ic9ZJ1jrquKGZ4_dU0gxyABvz0ZRZlPPitUIaoyefm3Trg/s220/1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6214778681897485490.post-5574888272822361207</id><published>2011-12-21T17:22:00.002+04:00</published><updated>2011-12-21T17:22:42.144+04:00</updated><title type='text'>Любителям Linq: оптимизация запроса</title><content type='html'>&lt;p&gt;&amp;nbsp;Недавно на работе возник вопрос: как можно оптимизировать вот такой код?&lt;/p&gt; &lt;blockquote&gt;&lt;font face=&quot;Courier New&quot; size=&quot;2&quot; color=&quot;black&quot;&gt;&lt;ol&gt;&lt;li&gt;&lt;font color=&quot;#0000ff&quot;&gt;foreach&lt;/font&gt; (TileCandidat tileID &lt;font color=&quot;#0000ff&quot;&gt;in&lt;/font&gt; tileIDs)&lt;/li&gt;&lt;li&gt;{&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;result.Add(player.TileSet.Where(t =&amp;gt; t.ID == tileID.ID).First());&lt;/li&gt;&lt;li&gt;}&lt;/li&gt;&lt;/ol&gt;&lt;/font&gt;&lt;/blockquote&gt;&lt;p align=&quot;left&quot;&gt;Было высказано мнение, что вот так:&lt;/p&gt;&lt;pre&gt;&amp;nbsp; &lt;/pre&gt;&lt;blockquote&gt;&lt;font face=&quot;Courier New&quot; size=&quot;2&quot; color=&quot;black&quot;&gt;&lt;ol&gt;&lt;li&gt;result = tileIDs.Select(tid =&amp;gt; player.TileSet.First(t =&amp;gt; t.ID == tid.ID)).ToList();&lt;/li&gt;&lt;/ol&gt;&lt;/font&gt;&lt;p&gt;&lt;font size=&quot;1&quot; color=&quot;gray&quot;&gt;* This source code was highlighted with &lt;a href=&quot;http://virtser.net/blog/post/source-code-highlighter.aspx&quot;&gt;&lt;font size=&quot;1&quot; color=&quot;gray&quot;&gt;Source Code Highlighter&lt;/font&gt;&lt;/a&gt;.&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://akochurov.blogspot.com/feeds/5574888272822361207/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6214778681897485490/5574888272822361207' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/5574888272822361207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/5574888272822361207'/><link rel='alternate' type='text/html' href='http://akochurov.blogspot.com/2011/12/linq.html' title='Любителям Linq: оптимизация запроса'/><author><name>nwm</name><uri>http://www.blogger.com/profile/11905520968599349090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1k_sUBZqbUuFEhywN12bJYKXU7Gh0LjqQK8_wEdr2od_ky0hB_CT_PUmDL4qg-dZ2rhi-1fJlCYKLolN1Ic9ZJ1jrquKGZ4_dU0gxyABvz0ZRZlPPitUIaoyefm3Trg/s220/1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6214778681897485490.post-9183368598395100910</id><published>2011-12-21T17:22:00.000+04:00</published><updated>2011-12-21T17:22:02.695+04:00</updated><title type='text'>C#: настроить ширину выпадающего списка по элементу максимальной длины</title><content type='html'>&lt;p&gt;Чтобы настроить ширину выпадающего списка объекта типа ComboBox (&lt;a href=&quot;http://www.codeproject.com/KB/combobox/ComboBoxAutoWidth.aspx&quot;&gt;код оригинала статьи&lt;/a&gt;).&lt;/p&gt;  &lt;blockquote&gt;&lt;font face=&quot;Courier New&quot; size=&quot;2&quot; color=&quot;black&quot;&gt;&lt;ol&gt;&lt;li&gt;&lt;font color=&quot;#0000ff&quot;&gt;private&lt;/font&gt; &lt;font color=&quot;#0000ff&quot;&gt;void&lt;/font&gt; comboDropDown(&lt;font color=&quot;#0000ff&quot;&gt;object&lt;/font&gt; sender, &lt;font color=&quot;#2b91af&quot;&gt;EventArgs&lt;/font&gt; e)&lt;/li&gt;&lt;li&gt;{&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;CustomComboBox senderComboBox = (CustomComboBox)sender;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#0000ff&quot;&gt;int&lt;/font&gt; newWidth = senderComboBox.DropDownWidth;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#0000ff&quot;&gt;int&lt;/font&gt; width = senderComboBox.DropDownWidth;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;System.Drawing.&lt;font color=&quot;#2b91af&quot;&gt;Font&lt;/font&gt; font = senderComboBox.&lt;font color=&quot;#2b91af&quot;&gt;Font&lt;/font&gt;;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;System.Drawing.&lt;font color=&quot;#2b91af&quot;&gt;Graphics&lt;/font&gt; g = senderComboBox.CreateGraphics();&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#0000ff&quot;&gt;int&lt;/font&gt; vertScrollBarWidth = (senderComboBox.Items.Count &amp;gt; senderComboBox.MaxDropDownItems) ?&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.Windows.Forms.SystemInformation.VerticalScrollBarWidth : 0;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#0000ff&quot;&gt;foreach&lt;/font&gt; (&lt;font color=&quot;#0000ff&quot;&gt;object&lt;/font&gt; item &lt;font color=&quot;#0000ff&quot;&gt;in&lt;/font&gt; ((CustomComboBox)senderComboBox).Items)&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;{&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#0000ff&quot;&gt;string&lt;/font&gt; s = senderComboBox.GetItemText(item);&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;newWidth = (&lt;font color=&quot;#0000ff&quot;&gt;int&lt;/font&gt;)g.MeasureString(s, font).Width + vertScrollBarWidth;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#0000ff&quot;&gt;if&lt;/font&gt; (width &amp;lt; newWidth)&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width = newWidth;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;}&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;senderComboBox.DropDownWidth = width;&lt;/li&gt;&lt;li&gt;}&lt;/li&gt;&lt;/ol&gt;&lt;/font&gt;&lt;p&gt;&lt;font size=&quot;1&quot; color=&quot;gray&quot;&gt;* This source code was highlighted with &lt;a href=&quot;http://virtser.net/blog/post/source-code-highlighter.aspx&quot;&gt;&lt;font size=&quot;1&quot; color=&quot;gray&quot;&gt;Source Code Highlighter&lt;/font&gt;&lt;/a&gt;.&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://akochurov.blogspot.com/feeds/9183368598395100910/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6214778681897485490/9183368598395100910' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/9183368598395100910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/9183368598395100910'/><link rel='alternate' type='text/html' href='http://akochurov.blogspot.com/2011/12/c_3619.html' title='C#: настроить ширину выпадающего списка по элементу максимальной длины'/><author><name>nwm</name><uri>http://www.blogger.com/profile/11905520968599349090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1k_sUBZqbUuFEhywN12bJYKXU7Gh0LjqQK8_wEdr2od_ky0hB_CT_PUmDL4qg-dZ2rhi-1fJlCYKLolN1Ic9ZJ1jrquKGZ4_dU0gxyABvz0ZRZlPPitUIaoyefm3Trg/s220/1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6214778681897485490.post-5909716427700108948</id><published>2011-12-21T17:20:00.002+04:00</published><updated>2011-12-21T17:20:55.998+04:00</updated><title type='text'>C#: прокрутка содержимого формы</title><content type='html'>&lt;p&gt;Если на форме больше компонентов, чем может быть&amp;nbsp;размещено, можно включить прокрутку элементов данной формы.&lt;/p&gt;&lt;p&gt;Вопрос индивидуальный - сделать прокрутку или вынести&amp;nbsp;&amp;quot;лишний&amp;quot; функционал на дополнительные формы или на вкладки.&lt;/p&gt;&lt;p&gt;Скроллинг включается у того компонента, который мы располагаем на целевой форме. Для этого нужно установить значение свойства AutoScroll = true у компонента, который будет прокручиваться.&lt;/p&gt;&lt;p&gt;Если речь идет о большом количестве объектов на форме, то лучше их расположить на отдельной панели и у нее включить свойство AutoScroll = true.&lt;/p&gt;&lt;p&gt;PS: чтобы понять, как правильно работает свойство AutoScrollMinSize, прочтите &lt;a href=&quot;http://www.bobpowell.net/understanding_autoscroll.htm&quot;&gt;статью&lt;/a&gt;.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://akochurov.blogspot.com/feeds/5909716427700108948/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6214778681897485490/5909716427700108948' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/5909716427700108948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/5909716427700108948'/><link rel='alternate' type='text/html' href='http://akochurov.blogspot.com/2011/12/c_21.html' title='C#: прокрутка содержимого формы'/><author><name>nwm</name><uri>http://www.blogger.com/profile/11905520968599349090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1k_sUBZqbUuFEhywN12bJYKXU7Gh0LjqQK8_wEdr2od_ky0hB_CT_PUmDL4qg-dZ2rhi-1fJlCYKLolN1Ic9ZJ1jrquKGZ4_dU0gxyABvz0ZRZlPPitUIaoyefm3Trg/s220/1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6214778681897485490.post-5827555585972390118</id><published>2011-12-21T17:19:00.003+04:00</published><updated>2011-12-21T17:19:58.562+04:00</updated><title type='text'>C# копирование файлов в момент компиляции</title><content type='html'>&lt;p&gt;Предположим, Вам нужно в момент компиляции приложения выполнить некоторые действия. &lt;/p&gt;&lt;p&gt;Например, скопировать файлы шаблонов отчетов, которые хранятся в проекте в сборке, в папке Templates.&lt;/p&gt;&lt;p&gt;Для этого нужно в свойствах проекта добавить в событие After Build Event похожим образом:&lt;/p&gt;&lt;p&gt;MD $(TargetDir)\\Templates&lt;br /&gt;COPY /Y $(ProjectDir)\\Templates\\* $(TargetDir)\\Templates&lt;/p&gt;&lt;p&gt;где, первая команда - это создание в папке, где будут созданы при компиляции готовые файлы приложения, папки для шаблонов Templates,&lt;/p&gt;&lt;p&gt;а следом идет команда, которая выполняет копирования из папки проекта Templates всех файлов в только что созданную папку Templates на диске.&lt;/p&gt;&lt;p&gt;Это удобно в момент разработки, когда предполагается, что у пользователя будет на диске некоторая структура папок, необходимая для работы Вашего приложения.&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://akochurov.blogspot.com/feeds/5827555585972390118/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6214778681897485490/5827555585972390118' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/5827555585972390118'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/5827555585972390118'/><link rel='alternate' type='text/html' href='http://akochurov.blogspot.com/2011/12/c.html' title='C# копирование файлов в момент компиляции'/><author><name>nwm</name><uri>http://www.blogger.com/profile/11905520968599349090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1k_sUBZqbUuFEhywN12bJYKXU7Gh0LjqQK8_wEdr2od_ky0hB_CT_PUmDL4qg-dZ2rhi-1fJlCYKLolN1Ic9ZJ1jrquKGZ4_dU0gxyABvz0ZRZlPPitUIaoyefm3Trg/s220/1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6214778681897485490.post-1992693682714467713</id><published>2011-12-21T17:19:00.000+04:00</published><updated>2011-12-21T17:19:00.436+04:00</updated><title type='text'>C# ListView в большом списке при установке фокуса показывать выбранную запись</title><content type='html'>&lt;p&gt;Чтобы&amp;nbsp;в&amp;nbsp;ListView-объекте с большим количеством записей, при выборе активной записи из невидимого диапазона, она становилась видимой пользователю, нужно просто вызвать метод EnsureVisible().&lt;/p&gt;  &lt;blockquote&gt;&lt;font face=&quot;Courier New&quot; size=&quot;2&quot; color=&quot;black&quot;&gt;&lt;ol&gt;&lt;li&gt; &lt;font color=&quot;#008000&quot;&gt;// Выделение справочника в списке&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color=&quot;#0000ff&quot;&gt;var&lt;/font&gt; itemToSelect = lvDictionaries.Items.OfType&amp;lt;ListViewItem&amp;gt;().SingleOrDefault(item =&amp;gt; &lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;item.Name == &amp;quot;Your Text To Select&amp;quot;);&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;font color=&quot;#0000ff&quot;&gt;if&lt;/font&gt; (itemToSelect != &lt;font color=&quot;#0000ff&quot;&gt;null&lt;/font&gt;)&lt;/li&gt;&lt;li&gt;{&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;itemToSelect.Selected = &lt;font color=&quot;#0000ff&quot;&gt;true&lt;/font&gt;;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;itemToSelect.EnsureVisible();&lt;/li&gt;&lt;li&gt;}&lt;/li&gt;&lt;/ol&gt;&lt;/font&gt;&lt;font size=&quot;1&quot; color=&quot;gray&quot;&gt;* This source code was highlighted with &lt;a href=&quot;http://virtser.net/blog/post/source-code-highlighter.aspx&quot;&gt;&lt;font size=&quot;1&quot; color=&quot;gray&quot;&gt;Source Code Highlighter&lt;/font&gt;&lt;/a&gt;.&lt;/font&gt;&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://akochurov.blogspot.com/feeds/1992693682714467713/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6214778681897485490/1992693682714467713' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/1992693682714467713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/1992693682714467713'/><link rel='alternate' type='text/html' href='http://akochurov.blogspot.com/2011/12/c-listview_21.html' title='C# ListView в большом списке при установке фокуса показывать выбранную запись'/><author><name>nwm</name><uri>http://www.blogger.com/profile/11905520968599349090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1k_sUBZqbUuFEhywN12bJYKXU7Gh0LjqQK8_wEdr2od_ky0hB_CT_PUmDL4qg-dZ2rhi-1fJlCYKLolN1Ic9ZJ1jrquKGZ4_dU0gxyABvz0ZRZlPPitUIaoyefm3Trg/s220/1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6214778681897485490.post-1266930941171219987</id><published>2011-12-21T17:18:00.001+04:00</published><updated>2011-12-21T17:18:10.048+04:00</updated><title type='text'>C# создание Word-документа без PIA</title><content type='html'>&lt;p&gt;&lt;span style=&quot;font: 13px/16px Arial, Helvetica, sans-serif; color: #333333; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; float: none; display: inline !important; white-space: normal; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; background-color: #ffffff; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px&quot; class=&quot;Apple-style-span&quot;&gt;Есть несколько способов создания (изменения) Microsoft Word документов, используя .NET языки:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font: 13px/16px Arial, Helvetica, sans-serif; color: #333333; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; float: none; display: inline !important; white-space: normal; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; background-color: #ffffff; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px&quot; class=&quot;Apple-style-span&quot;&gt;1. Используя объектную модель приложения Microsoft Word;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font: 13px/16px Arial, Helvetica, sans-serif; color: #333333; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; float: none; display: inline !important; white-space: normal; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; background-color: #ffffff; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px&quot; class=&quot;Apple-style-span&quot;&gt;2. Используя технологию OpenXML;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font: 13px/16px Arial, Helvetica, sans-serif; color: #333333; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; float: none; display: inline !important; white-space: normal; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; background-color: #ffffff; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px&quot; class=&quot;Apple-style-span&quot;&gt;3. Используя сторонние (платные и бесплатные) компоненты.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font: 13px/16px Arial, Helvetica, sans-serif; color: #333333; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; float: none; display: inline !important; white-space: normal; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; background-color: #ffffff; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px&quot; class=&quot;Apple-style-span&quot;&gt;Варианты 1 и 2 используются чаще всего в силу своей универсальности. Но, у первого варианта есть огромный недостаток - требуется наличие установленного офисного приложения с которым предполагается работать. Недостаток второго подхода - его сложность. Если Вы откроете документацию Microsoft, то увидите, что нужно будет Вам сделать, чтобы создать простой документ.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font: 13px/16px Arial, Helvetica, sans-serif; color: #333333; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; float: none; display: inline !important; white-space: normal; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; background-color: #ffffff; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px&quot; class=&quot;Apple-style-span&quot;&gt;Рассмотрим последний вариант. Благо, пока за этот подход не нужно платить тысячи долларов.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font: 13px/16px Arial, Helvetica, sans-serif; color: #333333; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; float: none; display: inline !important; white-space: normal; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; background-color: #ffffff; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px&quot; class=&quot;Apple-style-span&quot;&gt;Есть такой opensource-проект &lt;a href=&quot;http://docx.codeplex.com/&quot;&gt;DocX&lt;/a&gt;. Если кратко - это библиотека с открытым кодом, позволяющая создавать *.docx файлы. Она имеет мощный функционал работы с документов: как с новым, так и с шаблоном. Поддерживает работу с изображениями, таблицами, стилями и прочим функционалом, который необходим обычно при создании docx-документов из Вашего кода.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font: 13px/16px Arial, Helvetica, sans-serif; color: #333333; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; float: none; display: inline !important; white-space: normal; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; background-color: #ffffff; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px&quot; class=&quot;Apple-style-span&quot;&gt;Еще один приятный момент - эта библиотека содержит функционал для параллельной работы с несколькими документами. Например - Вам нужно одновременно заменить некоторый текст во всех файлах некоторой папки на диске. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font: 13px/16px Arial, Helvetica, sans-serif; color: #333333; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; float: none; display: inline !important; white-space: normal; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; background-color: #ffffff; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px&quot; class=&quot;Apple-style-span&quot;&gt;Есть аналоги, которые существуют уже давно, которые работают&amp;nbsp;имеют более широкий спектр функций и работающие со всеми приложениями Microsoft Office,&amp;nbsp;но за них просят серьезные деньги. &lt;/span&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://akochurov.blogspot.com/feeds/1266930941171219987/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6214778681897485490/1266930941171219987' title='Комментарии: 1'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/1266930941171219987'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/1266930941171219987'/><link rel='alternate' type='text/html' href='http://akochurov.blogspot.com/2011/12/c-word-pia.html' title='C# создание Word-документа без PIA'/><author><name>nwm</name><uri>http://www.blogger.com/profile/11905520968599349090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1k_sUBZqbUuFEhywN12bJYKXU7Gh0LjqQK8_wEdr2od_ky0hB_CT_PUmDL4qg-dZ2rhi-1fJlCYKLolN1Ic9ZJ1jrquKGZ4_dU0gxyABvz0ZRZlPPitUIaoyefm3Trg/s220/1.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6214778681897485490.post-6351917038012696848</id><published>2011-12-21T17:16:00.000+04:00</published><updated>2011-12-21T17:16:28.850+04:00</updated><title type='text'>C# ListView: как при потере фокуса сделать так чтобы выделенный элемент не терял выделение</title><content type='html'>&lt;div style=&quot;font: 13px/16px Arial, Helvetica, sans-serif; color: #333333; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; background-color: #ffffff; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px&quot;&gt;1. Чтобы выделенный в ListView элемент не терял выделения, либо не становился выделенным светло-серым цветом, нужно:&lt;/div&gt;&lt;div style=&quot;font: 13px/16px Arial, Helvetica, sans-serif; color: #333333; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; background-color: #ffffff; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px&quot;&gt;- для ListView установить свойство HideSelection = False;&lt;/div&gt;&lt;div style=&quot;font: 13px/16px Arial, Helvetica, sans-serif; color: #333333; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; background-color: #ffffff; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px&quot;&gt;2. Если нужно, чтобы выделение элемента при потере фокуса оставалось заданного цвета, нужно:&lt;/div&gt;&lt;div style=&quot;font: 13px/16px Arial, Helvetica, sans-serif; color: #333333; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; background-color: #ffffff; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px&quot;&gt;2.1. для ListView установить свойство OwnerDraw = True;&lt;/div&gt;&lt;div style=&quot;font: 13px/16px Arial, Helvetica, sans-serif; color: #333333; text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; background-color: #ffffff; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px&quot;&gt;2.2. переопределить поведение методов DrawItem и DrawSubItem:&lt;/div&gt;    &lt;blockquote&gt;&lt;font face=&quot;Courier New&quot; size=&quot;2&quot; color=&quot;black&quot;&gt;&lt;ol&gt;&lt;li&gt;&lt;font color=&quot;#008000&quot;&gt;/// &amp;lt;summary&amp;gt;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color=&quot;#008000&quot;&gt;/// Оформление ListView&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color=&quot;#008000&quot;&gt;/// &amp;lt;/summary&amp;gt;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color=&quot;#008000&quot;&gt;/// &amp;lt;param name=&amp;quot;sender&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color=&quot;#008000&quot;&gt;/// &amp;lt;param name=&amp;quot;e&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color=&quot;#0000ff&quot;&gt;private&lt;/font&gt; &lt;font color=&quot;#0000ff&quot;&gt;void&lt;/font&gt; lvDictionaries_DrawItem(&lt;font color=&quot;#0000ff&quot;&gt;object&lt;/font&gt; sender, DrawListViewItemEventArgs e)&lt;/li&gt;&lt;li&gt;{&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#008000&quot;&gt;// Если элемент выделен пользователем&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#0000ff&quot;&gt;if&lt;/font&gt; ((sender &lt;font color=&quot;#0000ff&quot;&gt;as&lt;/font&gt; ListView).SelectedItems.Contains(e.Item))&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e.&lt;font color=&quot;#2b91af&quot;&gt;Graphics&lt;/font&gt;.FillRectangle(Brushes.DodgerBlue, e.Bounds);&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e.DrawFocusRectangle();&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e.Item.ForeColor = Color.White;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;}&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#0000ff&quot;&gt;else&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e.&lt;font color=&quot;#2b91af&quot;&gt;Graphics&lt;/font&gt;.FillRectangle(Brushes.White, e.Bounds);&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e.Item.ForeColor = Color.Black;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;}&lt;/li&gt;&lt;li&gt;}&lt;/li&gt;&lt;li&gt;&lt;font color=&quot;#008000&quot;&gt;/// &amp;lt;summary&amp;gt;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color=&quot;#008000&quot;&gt;/// Отрисовка элементов ListView&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color=&quot;#008000&quot;&gt;/// &amp;lt;/summary&amp;gt;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color=&quot;#008000&quot;&gt;/// &amp;lt;param name=&amp;quot;sender&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color=&quot;#008000&quot;&gt;/// &amp;lt;param name=&amp;quot;e&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color=&quot;#0000ff&quot;&gt;private&lt;/font&gt; &lt;font color=&quot;#0000ff&quot;&gt;void&lt;/font&gt; lvDictionaries_DrawSubItem(&lt;font color=&quot;#0000ff&quot;&gt;object&lt;/font&gt; sender, DrawListViewSubItemEventArgs e)&lt;/li&gt;&lt;li&gt;{&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;TextFormatFlags flags = TextFormatFlags.Left;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&lt;font color=&quot;#0000ff&quot;&gt;using&lt;/font&gt; (StringFormat sf = &lt;font color=&quot;#0000ff&quot;&gt;new&lt;/font&gt; StringFormat())&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;{&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;e.DrawText(flags);&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;}&lt;/li&gt;&lt;li&gt;}&lt;/li&gt;&lt;/ol&gt;&lt;/font&gt;&lt;font size=&quot;1&quot; color=&quot;gray&quot;&gt;* This source code was highlighted with &lt;a href=&quot;http://virtser.net/blog/post/source-code-highlighter.aspx&quot;&gt;&lt;font size=&quot;1&quot; color=&quot;gray&quot;&gt;Source Code Highlighter&lt;/font&gt;&lt;/a&gt;.&lt;/font&gt;&lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://akochurov.blogspot.com/feeds/6351917038012696848/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6214778681897485490/6351917038012696848' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/6351917038012696848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/6351917038012696848'/><link rel='alternate' type='text/html' href='http://akochurov.blogspot.com/2011/12/c-listview.html' title='C# ListView: как при потере фокуса сделать так чтобы выделенный элемент не терял выделение'/><author><name>nwm</name><uri>http://www.blogger.com/profile/11905520968599349090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1k_sUBZqbUuFEhywN12bJYKXU7Gh0LjqQK8_wEdr2od_ky0hB_CT_PUmDL4qg-dZ2rhi-1fJlCYKLolN1Ic9ZJ1jrquKGZ4_dU0gxyABvz0ZRZlPPitUIaoyefm3Trg/s220/1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6214778681897485490.post-5712617387860992905</id><published>2011-09-03T18:51:00.001+04:00</published><updated>2011-09-03T18:51:12.817+04:00</updated><title type='text'>Бизнес для программистов или несколько советов от Эрика Синка</title><content type='html'>Если кто не знает, &lt;a href=&quot;http://www.ericsink.com/&quot;&gt;Эрик Синк&lt;/a&gt; является основателем компании &lt;a href=&quot;http://www.sourcegear.com&quot;&gt;SourceGear&lt;/a&gt;, которая занимается разработкой программного обеспечения для разработчиков. Некоторое время назад наткнулся на публикацию отрывка из его книги &quot;Бизнес для программистов&quot;, а на днях я ее дочитал. 

Теперь хочу поделиться ощущениями от прочитанного. Книга оставила сильные впечатления. Знаете, очень похоже по стилю изложения на Джоэля Спольски. Это и не удивительно - Эрик во многих местах книги упоминает публикации Джоэля в качестве примеров. Эрик, как и Джоэл, пишет легко и доступно о сложных вещах. Например о том, как он начинал свой бизнес, но самое, пожалуй, интересное в книге - это то, как он рассказывает о своих ошибках и промахах. А умение делать выводы из ошибок - ценное качество.

Эрик не дает советов как вы можете построить свой бизнес - он говорит о своей компании. Эта книга ценна, так как в ней можно найти то, что вам никто не расскажет просто так. Например, в ней есть главы, написанные доступным языком о маркетинге, о продажах ваших готовых продуктов, и, что мне больше всего понравилось, как рассчитать стоимость программного продукта.

Как и все программисты, я часто сталкиваюсь с вопросом - сколько будет стоить моя работа над каждым конкретным продуктом. А ведь никому не хочется ошибиться в меньшую сторону, правда? Итак, в книге есть азы маркетинга, применимо к индустрии создания программных продуктов. 
Также, есть главы, посвященные всему циклу подготовки и создания продукта, с его дальнейшей реализацией клиентам, участию в выставках и многое другое.

Есть главы, как подобрать команду, как выбрать помещение. Все это написано на примере IT-компании созданной в США, но многое пригодится и на Российском рынке.

Подведу итог - на мой взгляд, книга достойна того, чтобы ее прочитал каждый IT-шник, который планирует стать однажды во главе своей собственной компании. Кстати, не только по производству программных продуктов. Маркетинг - он везде маркетинг. Только не каждый может о нем так доступно рассказать.</content><link rel='replies' type='application/atom+xml' href='http://akochurov.blogspot.com/feeds/5712617387860992905/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6214778681897485490/5712617387860992905' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/5712617387860992905'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/5712617387860992905'/><link rel='alternate' type='text/html' href='http://akochurov.blogspot.com/2011/09/blog-post.html' title='Бизнес для программистов или несколько советов от Эрика Синка'/><author><name>nwm</name><uri>http://www.blogger.com/profile/11905520968599349090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1k_sUBZqbUuFEhywN12bJYKXU7Gh0LjqQK8_wEdr2od_ky0hB_CT_PUmDL4qg-dZ2rhi-1fJlCYKLolN1Ic9ZJ1jrquKGZ4_dU0gxyABvz0ZRZlPPitUIaoyefm3Trg/s220/1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6214778681897485490.post-4613480876141920387</id><published>2011-08-18T16:21:00.002+04:00</published><updated>2011-08-18T16:24:52.501+04:00</updated><title type='text'>Полезная утилита XSD.EXE - быстро создаем объектную модель базы данных</title><content type='html'>Привет!&lt;br /&gt;
&lt;br /&gt;
Вам наверняка доводилось сталкиваться с такими проектами, где есть xsd-схема базы данных и Вам требуется описать все классы для таблиц, связей и т.д. Эта задачам может отнять у Вас уйму времени. Но! Если, конечно, Вы не знаете о такой полезной утилите, как XSD.EXE.&lt;br /&gt;
&lt;br /&gt;
Скажу сразу - я о ней узнал от коллег и теперь хочу поделиться этим тайным знанием со всеми. Потому что она сэкономит Вам много времени. Базы данных бывают небольшие, а бывают и наоборот.&lt;br /&gt;
&lt;br /&gt;
У меня утилита располагается в папках&lt;br /&gt;
&quot;C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\xsd.exe&quot; &lt;br /&gt;
&quot;C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\xsd.exe&quot; &lt;br /&gt;
&quot;C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\xsd.exe&quot;&lt;br /&gt;
&lt;br /&gt;
Утилита консольная, запускается с разными ключами. На выходе возвращает файл с объектной моделью Вашей базы данных, описанной *.xsd схемой. &lt;br /&gt;
&lt;br /&gt;
Проще не бывает. Надеюсь, это кому-то поможет.&lt;br /&gt;
</content><link rel='replies' type='application/atom+xml' href='http://akochurov.blogspot.com/feeds/4613480876141920387/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6214778681897485490/4613480876141920387' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/4613480876141920387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/4613480876141920387'/><link rel='alternate' type='text/html' href='http://akochurov.blogspot.com/2011/08/xsdexe.html' title='Полезная утилита XSD.EXE - быстро создаем объектную модель базы данных'/><author><name>nwm</name><uri>http://www.blogger.com/profile/11905520968599349090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1k_sUBZqbUuFEhywN12bJYKXU7Gh0LjqQK8_wEdr2od_ky0hB_CT_PUmDL4qg-dZ2rhi-1fJlCYKLolN1Ic9ZJ1jrquKGZ4_dU0gxyABvz0ZRZlPPitUIaoyefm3Trg/s220/1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6214778681897485490.post-2563267151145808910</id><published>2011-08-18T00:28:00.001+04:00</published><updated>2011-08-18T11:35:44.767+04:00</updated><title type='text'>File Lock Issue in Visual Studio When Building a Project</title><content type='html'>Всем привет!&lt;br /&gt;
&lt;br /&gt;
Столкнулся с проблемой - для одного проекта пришлось установить пакет DevExpress 10.1.5. &lt;br /&gt;
&lt;br /&gt;
После установки пришлось разбираться с одним из WinForms проектов и появилась проблема - солюшен билдится либо только один раз, либо до первой ошибки, при последующих попытка собрать проект - появляется ошибка, что *.exe файл заблокирован другим процессом и поэтому исполняемый файл не может быть создан. &lt;br /&gt;
&lt;br /&gt;
Начал искать решение и, как выяснилось, такая ситуация возникает не только из-за DevExpress, а похоже еще по каким-то неведомым причинам и эта проблема была известна еще в 2005 студии, а может еще и раньше. У меня проблема возникла в Visual Studio 2010 Ultimate. &lt;br /&gt;
&lt;br /&gt;
Решений предлагают несколько. Я выделил два:&lt;br /&gt;
&lt;br /&gt;
1. В проекте для references, причем для каждой подключаемой библиотеки указать свойство Copy Local = false;&lt;br /&gt;
&lt;br /&gt;
2. А второе решение я нашел в &lt;a href=&quot;http://www.nayyeri.net/file-lock-issue-in-visual-studio-when-building-a-project&quot;&gt;блоге Keyvan Nayyeri&lt;/a&gt;. Тут предложено указать в свойствах проекта специфичную проверку в момент сборки.&lt;br /&gt;
&lt;br /&gt;
3. Перегружать студию после каждого оповещения об ошибке.&lt;br /&gt;
&lt;br /&gt;
4. Попробовать переставить студию. &lt;br /&gt;
&lt;br /&gt;
Метод 4 не гарантирует, что все заработает, потому его я оставил на самый крайний случай.&lt;br /&gt;
&lt;br /&gt;
По результатам - второй метод помог, но не на 100%. В какой-то момент приходится переоткрывать студию. И это меня совсем не радует.&lt;br /&gt;
&lt;br /&gt;
Буду искать решение.</content><link rel='replies' type='application/atom+xml' href='http://akochurov.blogspot.com/feeds/2563267151145808910/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6214778681897485490/2563267151145808910' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/2563267151145808910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/2563267151145808910'/><link rel='alternate' type='text/html' href='http://akochurov.blogspot.com/2011/08/file-lock-issue-in-visual-studio-when.html' title='File Lock Issue in Visual Studio When Building a Project'/><author><name>nwm</name><uri>http://www.blogger.com/profile/11905520968599349090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1k_sUBZqbUuFEhywN12bJYKXU7Gh0LjqQK8_wEdr2od_ky0hB_CT_PUmDL4qg-dZ2rhi-1fJlCYKLolN1Ic9ZJ1jrquKGZ4_dU0gxyABvz0ZRZlPPitUIaoyefm3Trg/s220/1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6214778681897485490.post-699138230853782224</id><published>2011-04-07T12:23:00.002+04:00</published><updated>2011-04-07T12:23:26.750+04:00</updated><title type='text'>ASP.NET MVC: работа с PartialView</title><content type='html'>Удивительное рядом: НЕЛЬЗЯ вызвать PartialView из PartialView.&lt;br /&gt;
Вот кто бы догадался.</content><link rel='replies' type='application/atom+xml' href='http://akochurov.blogspot.com/feeds/699138230853782224/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6214778681897485490/699138230853782224' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/699138230853782224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/699138230853782224'/><link rel='alternate' type='text/html' href='http://akochurov.blogspot.com/2011/04/aspnet-mvc-partialview.html' title='ASP.NET MVC: работа с PartialView'/><author><name>nwm</name><uri>http://www.blogger.com/profile/11905520968599349090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1k_sUBZqbUuFEhywN12bJYKXU7Gh0LjqQK8_wEdr2od_ky0hB_CT_PUmDL4qg-dZ2rhi-1fJlCYKLolN1Ic9ZJ1jrquKGZ4_dU0gxyABvz0ZRZlPPitUIaoyefm3Trg/s220/1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6214778681897485490.post-1047339466756767562</id><published>2011-04-06T16:38:00.000+04:00</published><updated>2011-04-06T16:38:56.056+04:00</updated><title type='text'>Management Studio: блокировка изменений в структуре таблицы</title><content type='html'>Если у Вас при попытке изменить структуру таблицы возникает сообщение о невозможности изменить структуру таблицы без её перегенерации - это значит, что нужно отключить функцию запроса пересоздания таблицы в базе данных. Сделать это можно отключив соответствующую опицию в меню Tools -&gt; Options -&gt; Designers. На этой странице нужно отключить опцию &quot;Prevent saving changes that require table re-creation&quot;</content><link rel='replies' type='application/atom+xml' href='http://akochurov.blogspot.com/feeds/1047339466756767562/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6214778681897485490/1047339466756767562' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/1047339466756767562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/1047339466756767562'/><link rel='alternate' type='text/html' href='http://akochurov.blogspot.com/2011/04/management-studio.html' title='Management Studio: блокировка изменений в структуре таблицы'/><author><name>nwm</name><uri>http://www.blogger.com/profile/11905520968599349090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1k_sUBZqbUuFEhywN12bJYKXU7Gh0LjqQK8_wEdr2od_ky0hB_CT_PUmDL4qg-dZ2rhi-1fJlCYKLolN1Ic9ZJ1jrquKGZ4_dU0gxyABvz0ZRZlPPitUIaoyefm3Trg/s220/1.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6214778681897485490.post-9156893629912016393</id><published>2010-09-13T17:19:00.000+04:00</published><updated>2010-09-13T17:19:06.209+04:00</updated><title type='text'>С Днем программиста!</title><content type='html'>Дорогие коллеги!&lt;br /&gt;
&lt;br /&gt;
Поздравляю Вас с профессиональным праздником - Днем программиста!&lt;br /&gt;
Желаю вдохновения, побольше красивого кода, профессионального роста и финансового благополучия!</content><link rel='replies' type='application/atom+xml' href='http://akochurov.blogspot.com/feeds/9156893629912016393/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6214778681897485490/9156893629912016393' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/9156893629912016393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6214778681897485490/posts/default/9156893629912016393'/><link rel='alternate' type='text/html' href='http://akochurov.blogspot.com/2010/09/blog-post.html' title='С Днем программиста!'/><author><name>nwm</name><uri>http://www.blogger.com/profile/11905520968599349090</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1k_sUBZqbUuFEhywN12bJYKXU7Gh0LjqQK8_wEdr2od_ky0hB_CT_PUmDL4qg-dZ2rhi-1fJlCYKLolN1Ic9ZJ1jrquKGZ4_dU0gxyABvz0ZRZlPPitUIaoyefm3Trg/s220/1.JPG'/></author><thr:total>0</thr:total></entry></feed>