<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;AkYCQXYzfSp7ImA9WhRaE0o.&quot;"><id>tag:blogger.com,1999:blog-6214778681897485490</id><updated>2012-02-16T11:42:40.885+04:00</updated><title>Alexander Kochurov developer'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="alternate" type="text/html" href="http://akochurov.blogspot.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&amp;v=2" /><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="http://3.bp.blogspot.com/_gQewxFYeApE/S-KAMhZUAuI/AAAAAAAAABw/l2lpCMBp5EA/S220/1.JPG" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>40</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/AlexanderKochurovDevelopersBlog" /><feedburner:info uri="alexanderkochurovdevelopersblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;C08CQHg8fCp7ImA9WhRVF0Q.&quot;"><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><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-17T13:17:41.674+04:00</app:edited><title>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 завершается успешно.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6214778681897485490-429321144112139198?l=akochurov.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Y4i32k54pUeFUa7Lem_34VQRRH8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Y4i32k54pUeFUa7Lem_34VQRRH8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Y4i32k54pUeFUa7Lem_34VQRRH8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Y4i32k54pUeFUa7Lem_34VQRRH8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexanderKochurovDevelopersBlog/~4/Smbw51fylRQ" height="1" width="1"/&gt;</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.g?blogID=6214778681897485490&amp;postID=429321144112139198" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/429321144112139198?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/429321144112139198?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexanderKochurovDevelopersBlog/~3/Smbw51fylRQ/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="http://3.bp.blogspot.com/_gQewxFYeApE/S-KAMhZUAuI/AAAAAAAAABw/l2lpCMBp5EA/S220/1.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://akochurov.blogspot.com/2012/01/redgate-sql-server-2008-r2-installation.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8FQXs8fip7ImA9WhRWEkk.&quot;"><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><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-30T16:23:30.576+04:00</app:edited><title>С наступающим Новым годом!</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-pDfOMsYySK4/Tv2skrikAnI/AAAAAAAAAmE/5DUDAMk4r9Q/s1600/290.jpg" imageanchor="1" style="clear:left; float:left;margin-right:1em; margin-bottom:1em"&gt;&lt;img border="0" height="320" width="320" src="http://2.bp.blogspot.com/-pDfOMsYySK4/Tv2skrikAnI/AAAAAAAAAmE/5DUDAMk4r9Q/s320/290.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;

Друзья!
Поздравляю всех Вас с наступающим Новым годом!
Желаю счастья, успехов и здоровья!
Пусть Новый год принесет всё то, что Вы от него ждёте!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6214778681897485490-2861854717961995852?l=akochurov.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/cGEv_XH2G-s0jISOikFQ038fJtU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cGEv_XH2G-s0jISOikFQ038fJtU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/cGEv_XH2G-s0jISOikFQ038fJtU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cGEv_XH2G-s0jISOikFQ038fJtU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexanderKochurovDevelopersBlog/~4/sOhGblIEcGc" height="1" width="1"/&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.g?blogID=6214778681897485490&amp;postID=2861854717961995852" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/2861854717961995852?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/2861854717961995852?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexanderKochurovDevelopersBlog/~3/sOhGblIEcGc/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="http://3.bp.blogspot.com/_gQewxFYeApE/S-KAMhZUAuI/AAAAAAAAABw/l2lpCMBp5EA/S220/1.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-pDfOMsYySK4/Tv2skrikAnI/AAAAAAAAAmE/5DUDAMk4r9Q/s72-c/290.jpg" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://akochurov.blogspot.com/2011/12/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkIBRnwzfip7ImA9WhRXFEo.&quot;"><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><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-21T17:35:57.286+04:00</app:edited><title>C#: Image in DataGridViewImageCell (Картинка в столбце DataGridView)</title><content type="html">&lt;p&gt;&lt;font face="Verdana" color="#000000"&gt;Если Вы хотите создать столбец в DataGridView, где будут отображаться разные значки, в зависимости от содержимого каждой строки, это можно сделать следующим образом:&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Verdana" color="#000000"&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;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6214778681897485490-2992762559667389704?l=akochurov.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/uWweJszyPID_RkGjSTlDYQ-VuEs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uWweJszyPID_RkGjSTlDYQ-VuEs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/uWweJszyPID_RkGjSTlDYQ-VuEs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uWweJszyPID_RkGjSTlDYQ-VuEs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexanderKochurovDevelopersBlog/~4/Hvn-sGVWGek" height="1" width="1"/&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.g?blogID=6214778681897485490&amp;postID=2992762559667389704" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/2992762559667389704?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/2992762559667389704?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexanderKochurovDevelopersBlog/~3/Hvn-sGVWGek/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="http://3.bp.blogspot.com/_gQewxFYeApE/S-KAMhZUAuI/AAAAAAAAABw/l2lpCMBp5EA/S220/1.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://akochurov.blogspot.com/2011/12/c-image-in-datagridviewimagecell.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkMMR3Y9fyp7ImA9WhRXFEo.&quot;"><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><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-21T17:34:46.867+04:00</app:edited><title>Выполнить SQL-файл в C#</title><content type="html">&lt;p&gt;За основу взята статья на &lt;a href="http://www.sql.ru/forum/actualthread.aspx?tid=673100"&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;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6214778681897485490-7661895816962227862?l=akochurov.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/DK_niXHa4ng-6RqWle83mQhA1Mc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DK_niXHa4ng-6RqWle83mQhA1Mc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/DK_niXHa4ng-6RqWle83mQhA1Mc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DK_niXHa4ng-6RqWle83mQhA1Mc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexanderKochurovDevelopersBlog/~4/N_Sqb5JObjk" height="1" width="1"/&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.g?blogID=6214778681897485490&amp;postID=7661895816962227862" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/7661895816962227862?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/7661895816962227862?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexanderKochurovDevelopersBlog/~3/N_Sqb5JObjk/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="http://3.bp.blogspot.com/_gQewxFYeApE/S-KAMhZUAuI/AAAAAAAAABw/l2lpCMBp5EA/S220/1.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://akochurov.blogspot.com/2011/12/sql-c.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkMFQ3s8fyp7ImA9WhRXFEo.&quot;"><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><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-21T17:33:32.577+04:00</app:edited><title>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;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6214778681897485490-1917896200146126031?l=akochurov.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WC5OA_9Pkvptuvmi6y6EvdQDigU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WC5OA_9Pkvptuvmi6y6EvdQDigU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WC5OA_9Pkvptuvmi6y6EvdQDigU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WC5OA_9Pkvptuvmi6y6EvdQDigU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexanderKochurovDevelopersBlog/~4/tsYv21DhNok" height="1" width="1"/&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.g?blogID=6214778681897485490&amp;postID=1917896200146126031" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/1917896200146126031?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/1917896200146126031?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexanderKochurovDevelopersBlog/~3/tsYv21DhNok/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="http://3.bp.blogspot.com/_gQewxFYeApE/S-KAMhZUAuI/AAAAAAAAABw/l2lpCMBp5EA/S220/1.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://akochurov.blogspot.com/2011/12/c_587.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkQBSH4-cSp7ImA9WhRXFEo.&quot;"><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><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-21T17:32:39.059+04:00</app:edited><title>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;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6214778681897485490-3115871203051333247?l=akochurov.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3flUjME7dI6gbJaKWMHq1RfqbK0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3flUjME7dI6gbJaKWMHq1RfqbK0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3flUjME7dI6gbJaKWMHq1RfqbK0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3flUjME7dI6gbJaKWMHq1RfqbK0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexanderKochurovDevelopersBlog/~4/_gQ04xUYxBY" height="1" width="1"/&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.g?blogID=6214778681897485490&amp;postID=3115871203051333247" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/3115871203051333247?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/3115871203051333247?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexanderKochurovDevelopersBlog/~3/_gQ04xUYxBY/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="http://3.bp.blogspot.com/_gQewxFYeApE/S-KAMhZUAuI/AAAAAAAAABw/l2lpCMBp5EA/S220/1.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://akochurov.blogspot.com/2011/12/c_3740.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkUCRH4-eCp7ImA9WhRXFEo.&quot;"><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><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-21T17:31:05.050+04:00</app:edited><title>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="2"&gt;[assembly: AssemblyKeyFile(&amp;quot;TesLib1.snk&amp;quot;)]&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size="2"&gt;7. Откомпилировать нашу сборку и получим библиотеку *.dll готовую для регистрации в системе как COM-объект.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size="2"&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="http://www.sqlland.ru/downloads/TestLib1.rar"&gt;&lt;strong&gt;примера&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Я хочу выразить благодарность Shripad Kulkarni, по мотивам &lt;a href="http://www.csharphelp.com/archives/archive281.html"&gt;статьи&lt;/a&gt; которого я написал эту заметку.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6214778681897485490-4342015074278877613?l=akochurov.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xl3pzNqHHqdqSnjJKzqNjt4p5e0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xl3pzNqHHqdqSnjJKzqNjt4p5e0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xl3pzNqHHqdqSnjJKzqNjt4p5e0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xl3pzNqHHqdqSnjJKzqNjt4p5e0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexanderKochurovDevelopersBlog/~4/BpoxRuF16QA" height="1" width="1"/&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.g?blogID=6214778681897485490&amp;postID=4342015074278877613" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/4342015074278877613?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/4342015074278877613?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexanderKochurovDevelopersBlog/~3/BpoxRuF16QA/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="http://3.bp.blogspot.com/_gQewxFYeApE/S-KAMhZUAuI/AAAAAAAAABw/l2lpCMBp5EA/S220/1.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://akochurov.blogspot.com/2011/12/c-com.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkYNSHszeSp7ImA9WhRXFEo.&quot;"><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><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-21T17:29:59.581+04:00</app:edited><title>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;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6214778681897485490-2936954215984832433?l=akochurov.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3VaImx6n8OLn-znlngMiHs69ngY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3VaImx6n8OLn-znlngMiHs69ngY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3VaImx6n8OLn-znlngMiHs69ngY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3VaImx6n8OLn-znlngMiHs69ngY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexanderKochurovDevelopersBlog/~4/wsQOVfbCzeM" height="1" width="1"/&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.g?blogID=6214778681897485490&amp;postID=2936954215984832433" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/2936954215984832433?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/2936954215984832433?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexanderKochurovDevelopersBlog/~3/wsQOVfbCzeM/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="http://3.bp.blogspot.com/_gQewxFYeApE/S-KAMhZUAuI/AAAAAAAAABw/l2lpCMBp5EA/S220/1.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://akochurov.blogspot.com/2011/12/c-c.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU8BR30zfyp7ImA9WhRXFEo.&quot;"><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><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-21T17:24:16.387+04:00</app:edited><title>C# EF Error: System.Data.SqlClient.SqlException: Invalid column name 'Discriminator'</title><content type="html">&lt;div style="margin: 0px 15px !important; padding: 0px; font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 10px; background-color: #ffffff"&gt;&lt;div style="color: #333333; line-height: 16px; font-family: Arial,Helvetica,sans-serif; font-size: 13px"&gt;В проекте используется Entity Framework Code First.&lt;/div&gt;&lt;div style="color: #333333; line-height: 16px; font-family: Arial,Helvetica,sans-serif; font-size: 13px"&gt;Если начинает возникать ошибка&amp;nbsp;System.Data.SqlClient.SqlException: Invalid column name &amp;#39;Discriminator&amp;#39;, значит, возможно, где-то был создан класс, унаследованный от класса, для которого настроен Mapping.&amp;nbsp;&lt;/div&gt;&lt;div style="color: #333333; line-height: 16px; font-family: Arial,Helvetica,sans-serif; font-size: 13px"&gt;Этому классу нужно добавить атрибут [NotMapped]. &lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6214778681897485490-5203545666857415741?l=akochurov.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MHPsGCkZWb64ycMZmFL2Osj0VX4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MHPsGCkZWb64ycMZmFL2Osj0VX4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/MHPsGCkZWb64ycMZmFL2Osj0VX4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MHPsGCkZWb64ycMZmFL2Osj0VX4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexanderKochurovDevelopersBlog/~4/8W2ApYCdFXE" height="1" width="1"/&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.g?blogID=6214778681897485490&amp;postID=5203545666857415741" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/5203545666857415741?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/5203545666857415741?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexanderKochurovDevelopersBlog/~3/8W2ApYCdFXE/c-ef-error-systemdatasqlclientsqlexcept.html" title="C# EF Error: System.Data.SqlClient.SqlException: Invalid column name 'Discriminator'" /><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="http://3.bp.blogspot.com/_gQewxFYeApE/S-KAMhZUAuI/AAAAAAAAABw/l2lpCMBp5EA/S220/1.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://akochurov.blogspot.com/2011/12/c-ef-error-systemdatasqlclientsqlexcept.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU8FR3g-eyp7ImA9WhRXFEo.&quot;"><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><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-21T17:23:36.653+04:00</app:edited><title>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;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6214778681897485490-4564115640220044173?l=akochurov.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/b8bcaXoTq8r42rgmTCalRqbMWUI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/b8bcaXoTq8r42rgmTCalRqbMWUI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/b8bcaXoTq8r42rgmTCalRqbMWUI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/b8bcaXoTq8r42rgmTCalRqbMWUI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexanderKochurovDevelopersBlog/~4/0z4TMItfa6M" height="1" width="1"/&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.g?blogID=6214778681897485490&amp;postID=4564115640220044173" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/4564115640220044173?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/4564115640220044173?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexanderKochurovDevelopersBlog/~3/0z4TMItfa6M/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="http://3.bp.blogspot.com/_gQewxFYeApE/S-KAMhZUAuI/AAAAAAAAABw/l2lpCMBp5EA/S220/1.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://akochurov.blogspot.com/2011/12/c-winforms-usercontrol.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUACQ38_fCp7ImA9WhRXFEo.&quot;"><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><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-21T17:22:42.144+04:00</app:edited><title>Любителям Linq: оптимизация запроса</title><content type="html">&lt;p&gt;&amp;nbsp;Недавно на работе возник вопрос: как можно оптимизировать вот такой код?&lt;/p&gt; &lt;blockquote&gt;&lt;font face="Courier New" size="2" color="black"&gt;&lt;ol&gt;&lt;li&gt;&lt;font color="#0000ff"&gt;foreach&lt;/font&gt; (TileCandidat tileID &lt;font color="#0000ff"&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="left"&gt;Было высказано мнение, что вот так:&lt;/p&gt;&lt;pre&gt;&amp;nbsp; &lt;/pre&gt;&lt;blockquote&gt;&lt;font face="Courier New" size="2" color="black"&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="1" color="gray"&gt;* This source code was highlighted with &lt;a href="http://virtser.net/blog/post/source-code-highlighter.aspx"&gt;&lt;font size="1" color="gray"&gt;Source Code Highlighter&lt;/font&gt;&lt;/a&gt;.&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6214778681897485490-5574888272822361207?l=akochurov.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/jLUPNckWOHbYuuiuX31bn7iIN18/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jLUPNckWOHbYuuiuX31bn7iIN18/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/jLUPNckWOHbYuuiuX31bn7iIN18/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/jLUPNckWOHbYuuiuX31bn7iIN18/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexanderKochurovDevelopersBlog/~4/7AQw8Dka-sU" height="1" width="1"/&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.g?blogID=6214778681897485490&amp;postID=5574888272822361207" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/5574888272822361207?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/5574888272822361207?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexanderKochurovDevelopersBlog/~3/7AQw8Dka-sU/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="http://3.bp.blogspot.com/_gQewxFYeApE/S-KAMhZUAuI/AAAAAAAAABw/l2lpCMBp5EA/S220/1.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://akochurov.blogspot.com/2011/12/linq.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUAGQ3gyfSp7ImA9WhRXFEo.&quot;"><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><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-21T17:22:02.695+04:00</app:edited><title>C#: настроить ширину выпадающего списка по элементу максимальной длины</title><content type="html">&lt;p&gt;Чтобы настроить ширину выпадающего списка объекта типа ComboBox (&lt;a href="http://www.codeproject.com/KB/combobox/ComboBoxAutoWidth.aspx"&gt;код оригинала статьи&lt;/a&gt;).&lt;/p&gt;  &lt;blockquote&gt;&lt;font face="Courier New" size="2" color="black"&gt;&lt;ol&gt;&lt;li&gt;&lt;font color="#0000ff"&gt;private&lt;/font&gt; &lt;font color="#0000ff"&gt;void&lt;/font&gt; comboDropDown(&lt;font color="#0000ff"&gt;object&lt;/font&gt; sender, &lt;font color="#2b91af"&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="#0000ff"&gt;int&lt;/font&gt; newWidth = senderComboBox.DropDownWidth;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;int&lt;/font&gt; width = senderComboBox.DropDownWidth;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;System.Drawing.&lt;font color="#2b91af"&gt;Font&lt;/font&gt; font = senderComboBox.&lt;font color="#2b91af"&gt;Font&lt;/font&gt;;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;System.Drawing.&lt;font color="#2b91af"&gt;Graphics&lt;/font&gt; g = senderComboBox.CreateGraphics();&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&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="#0000ff"&gt;foreach&lt;/font&gt; (&lt;font color="#0000ff"&gt;object&lt;/font&gt; item &lt;font color="#0000ff"&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="#0000ff"&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="#0000ff"&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="#0000ff"&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="1" color="gray"&gt;* This source code was highlighted with &lt;a href="http://virtser.net/blog/post/source-code-highlighter.aspx"&gt;&lt;font size="1" color="gray"&gt;Source Code Highlighter&lt;/font&gt;&lt;/a&gt;.&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6214778681897485490-9183368598395100910?l=akochurov.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/NWLRiqAd-j8LS0e-vmvoExsLeE0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NWLRiqAd-j8LS0e-vmvoExsLeE0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/NWLRiqAd-j8LS0e-vmvoExsLeE0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/NWLRiqAd-j8LS0e-vmvoExsLeE0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexanderKochurovDevelopersBlog/~4/BFw-uYqdzMU" height="1" width="1"/&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.g?blogID=6214778681897485490&amp;postID=9183368598395100910" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/9183368598395100910?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/9183368598395100910?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexanderKochurovDevelopersBlog/~3/BFw-uYqdzMU/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="http://3.bp.blogspot.com/_gQewxFYeApE/S-KAMhZUAuI/AAAAAAAAABw/l2lpCMBp5EA/S220/1.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://akochurov.blogspot.com/2011/12/c_3619.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUEBRHcycCp7ImA9WhRXFEo.&quot;"><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><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-21T17:20:55.998+04:00</app:edited><title>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="http://www.bobpowell.net/understanding_autoscroll.htm"&gt;статью&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6214778681897485490-5909716427700108948?l=akochurov.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/6lwGh4xrv_JGXTcQ1lQHWDgHuFs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6lwGh4xrv_JGXTcQ1lQHWDgHuFs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/6lwGh4xrv_JGXTcQ1lQHWDgHuFs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/6lwGh4xrv_JGXTcQ1lQHWDgHuFs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexanderKochurovDevelopersBlog/~4/QnPtcgJk3hU" height="1" width="1"/&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.g?blogID=6214778681897485490&amp;postID=5909716427700108948" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/5909716427700108948?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/5909716427700108948?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexanderKochurovDevelopersBlog/~3/QnPtcgJk3hU/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="http://3.bp.blogspot.com/_gQewxFYeApE/S-KAMhZUAuI/AAAAAAAAABw/l2lpCMBp5EA/S220/1.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://akochurov.blogspot.com/2011/12/c_21.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUINSXs9eip7ImA9WhRXFEo.&quot;"><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><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-21T17:19:58.562+04:00</app:edited><title>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;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6214778681897485490-5827555585972390118?l=akochurov.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2qg1zCxQSVS05G-yX3JFKY0zSRs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2qg1zCxQSVS05G-yX3JFKY0zSRs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2qg1zCxQSVS05G-yX3JFKY0zSRs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2qg1zCxQSVS05G-yX3JFKY0zSRs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexanderKochurovDevelopersBlog/~4/XNjMB09qpkw" height="1" width="1"/&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.g?blogID=6214778681897485490&amp;postID=5827555585972390118" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/5827555585972390118?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/5827555585972390118?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexanderKochurovDevelopersBlog/~3/XNjMB09qpkw/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="http://3.bp.blogspot.com/_gQewxFYeApE/S-KAMhZUAuI/AAAAAAAAABw/l2lpCMBp5EA/S220/1.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://akochurov.blogspot.com/2011/12/c.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUIAQXo4fip7ImA9WhRXFEo.&quot;"><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><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-21T17:19:00.436+04:00</app:edited><title>C# ListView в большом списке при установке фокуса показывать выбранную запись</title><content type="html">&lt;p&gt;Чтобы&amp;nbsp;в&amp;nbsp;ListView-объекте с большим количеством записей, при выборе активной записи из невидимого диапазона, она становилась видимой пользователю, нужно просто вызвать метод EnsureVisible().&lt;/p&gt;  &lt;blockquote&gt;&lt;font face="Courier New" size="2" color="black"&gt;&lt;ol&gt;&lt;li&gt; &lt;font color="#008000"&gt;// Выделение справочника в списке&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color="#0000ff"&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="#0000ff"&gt;if&lt;/font&gt; (itemToSelect != &lt;font color="#0000ff"&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="#0000ff"&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="1" color="gray"&gt;* This source code was highlighted with &lt;a href="http://virtser.net/blog/post/source-code-highlighter.aspx"&gt;&lt;font size="1" color="gray"&gt;Source Code Highlighter&lt;/font&gt;&lt;/a&gt;.&lt;/font&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6214778681897485490-1992693682714467713?l=akochurov.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/u7AHQiktClurWktb_58ogX1chTM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/u7AHQiktClurWktb_58ogX1chTM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/u7AHQiktClurWktb_58ogX1chTM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/u7AHQiktClurWktb_58ogX1chTM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexanderKochurovDevelopersBlog/~4/WM5rOE-ZIks" height="1" width="1"/&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.g?blogID=6214778681897485490&amp;postID=1992693682714467713" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/1992693682714467713?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/1992693682714467713?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexanderKochurovDevelopersBlog/~3/WM5rOE-ZIks/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="http://3.bp.blogspot.com/_gQewxFYeApE/S-KAMhZUAuI/AAAAAAAAABw/l2lpCMBp5EA/S220/1.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://akochurov.blogspot.com/2011/12/c-listview_21.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUMNQX4_cCp7ImA9WhRXFEo.&quot;"><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><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-21T17:18:10.048+04:00</app:edited><title>C# создание Word-документа без PIA</title><content type="html">&lt;p&gt;&lt;span style="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" class="Apple-style-span"&gt;Есть несколько способов создания (изменения) Microsoft Word документов, используя .NET языки:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="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" class="Apple-style-span"&gt;1. Используя объектную модель приложения Microsoft Word;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="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" class="Apple-style-span"&gt;2. Используя технологию OpenXML;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="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" class="Apple-style-span"&gt;3. Используя сторонние (платные и бесплатные) компоненты.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="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" class="Apple-style-span"&gt;Варианты 1 и 2 используются чаще всего в силу своей универсальности. Но, у первого варианта есть огромный недостаток - требуется наличие установленного офисного приложения с которым предполагается работать. Недостаток второго подхода - его сложность. Если Вы откроете документацию Microsoft, то увидите, что нужно будет Вам сделать, чтобы создать простой документ.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="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" class="Apple-style-span"&gt;Рассмотрим последний вариант. Благо, пока за этот подход не нужно платить тысячи долларов.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="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" class="Apple-style-span"&gt;Есть такой opensource-проект &lt;a href="http://docx.codeplex.com/"&gt;DocX&lt;/a&gt;. Если кратко - это библиотека с открытым кодом, позволяющая создавать *.docx файлы. Она имеет мощный функционал работы с документов: как с новым, так и с шаблоном. Поддерживает работу с изображениями, таблицами, стилями и прочим функционалом, который необходим обычно при создании docx-документов из Вашего кода.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="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" class="Apple-style-span"&gt;Еще один приятный момент - эта библиотека содержит функционал для параллельной работы с несколькими документами. Например - Вам нужно одновременно заменить некоторый текст во всех файлах некоторой папки на диске. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="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" class="Apple-style-span"&gt;Есть аналоги, которые существуют уже давно, которые работают&amp;nbsp;имеют более широкий спектр функций и работающие со всеми приложениями Microsoft Office,&amp;nbsp;но за них просят серьезные деньги. &lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6214778681897485490-1266930941171219987?l=akochurov.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/U7FMwFyWhJb7jHlYKFXqKVs_5zI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/U7FMwFyWhJb7jHlYKFXqKVs_5zI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/U7FMwFyWhJb7jHlYKFXqKVs_5zI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/U7FMwFyWhJb7jHlYKFXqKVs_5zI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexanderKochurovDevelopersBlog/~4/GGxjYtMZzOg" height="1" width="1"/&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.g?blogID=6214778681897485490&amp;postID=1266930941171219987" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/1266930941171219987?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/1266930941171219987?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexanderKochurovDevelopersBlog/~3/GGxjYtMZzOg/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="http://3.bp.blogspot.com/_gQewxFYeApE/S-KAMhZUAuI/AAAAAAAAABw/l2lpCMBp5EA/S220/1.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://akochurov.blogspot.com/2011/12/c-word-pia.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUQMSXY-eCp7ImA9WhRXFEo.&quot;"><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><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-21T17:16:28.850+04:00</app:edited><title>C# ListView: как при потере фокуса сделать так чтобы выделенный элемент не терял выделение</title><content type="html">&lt;div style="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"&gt;1. Чтобы выделенный в ListView элемент не терял выделения, либо не становился выделенным светло-серым цветом, нужно:&lt;/div&gt;&lt;div style="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"&gt;- для ListView установить свойство HideSelection = False;&lt;/div&gt;&lt;div style="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"&gt;2. Если нужно, чтобы выделение элемента при потере фокуса оставалось заданного цвета, нужно:&lt;/div&gt;&lt;div style="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"&gt;2.1. для ListView установить свойство OwnerDraw = True;&lt;/div&gt;&lt;div style="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"&gt;2.2. переопределить поведение методов DrawItem и DrawSubItem:&lt;/div&gt;    &lt;blockquote&gt;&lt;font face="Courier New" size="2" color="black"&gt;&lt;ol&gt;&lt;li&gt;&lt;font color="#008000"&gt;/// &amp;lt;summary&amp;gt;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color="#008000"&gt;/// Оформление ListView&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color="#008000"&gt;/// &amp;lt;/summary&amp;gt;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color="#008000"&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="#008000"&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="#0000ff"&gt;private&lt;/font&gt; &lt;font color="#0000ff"&gt;void&lt;/font&gt; lvDictionaries_DrawItem(&lt;font color="#0000ff"&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="#008000"&gt;// Если элемент выделен пользователем&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&amp;nbsp;&amp;nbsp;&lt;font color="#0000ff"&gt;if&lt;/font&gt; ((sender &lt;font color="#0000ff"&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="#2b91af"&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="#0000ff"&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="#2b91af"&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="#008000"&gt;/// &amp;lt;summary&amp;gt;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color="#008000"&gt;/// Отрисовка элементов ListView&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color="#008000"&gt;/// &amp;lt;/summary&amp;gt;&lt;/font&gt;&lt;/li&gt;&lt;li&gt;&lt;font color="#008000"&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="#008000"&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="#0000ff"&gt;private&lt;/font&gt; &lt;font color="#0000ff"&gt;void&lt;/font&gt; lvDictionaries_DrawSubItem(&lt;font color="#0000ff"&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="#0000ff"&gt;using&lt;/font&gt; (StringFormat sf = &lt;font color="#0000ff"&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="1" color="gray"&gt;* This source code was highlighted with &lt;a href="http://virtser.net/blog/post/source-code-highlighter.aspx"&gt;&lt;font size="1" color="gray"&gt;Source Code Highlighter&lt;/font&gt;&lt;/a&gt;.&lt;/font&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6214778681897485490-6351917038012696848?l=akochurov.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/MUugkW2hX1LqRwtHiZ0TLX4AAJs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MUugkW2hX1LqRwtHiZ0TLX4AAJs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/MUugkW2hX1LqRwtHiZ0TLX4AAJs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/MUugkW2hX1LqRwtHiZ0TLX4AAJs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexanderKochurovDevelopersBlog/~4/2WGuCU7Bhuk" height="1" width="1"/&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.g?blogID=6214778681897485490&amp;postID=6351917038012696848" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/6351917038012696848?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/6351917038012696848?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexanderKochurovDevelopersBlog/~3/2WGuCU7Bhuk/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="http://3.bp.blogspot.com/_gQewxFYeApE/S-KAMhZUAuI/AAAAAAAAABw/l2lpCMBp5EA/S220/1.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://akochurov.blogspot.com/2011/12/c-listview.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0MDQ3Y6fyp7ImA9WhdWEEs.&quot;"><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><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-03T18:51:12.817+04:00</app:edited><title>Бизнес для программистов или несколько советов от Эрика Синка</title><content type="html">Если кто не знает, &lt;a href="http://www.ericsink.com/"&gt;Эрик Синк&lt;/a&gt; является основателем компании &lt;a href="http://www.sourcegear.com"&gt;SourceGear&lt;/a&gt;, которая занимается разработкой программного обеспечения для разработчиков. Некоторое время назад наткнулся на публикацию отрывка из его книги "Бизнес для программистов", а на днях я ее дочитал. 

Теперь хочу поделиться ощущениями от прочитанного. Книга оставила сильные впечатления. Знаете, очень похоже по стилю изложения на Джоэля Спольски. Это и не удивительно - Эрик во многих местах книги упоминает публикации Джоэля в качестве примеров. Эрик, как и Джоэл, пишет легко и доступно о сложных вещах. Например о том, как он начинал свой бизнес, но самое, пожалуй, интересное в книге - это то, как он рассказывает о своих ошибках и промахах. А умение делать выводы из ошибок - ценное качество.

Эрик не дает советов как вы можете построить свой бизнес - он говорит о своей компании. Эта книга ценна, так как в ней можно найти то, что вам никто не расскажет просто так. Например, в ней есть главы, написанные доступным языком о маркетинге, о продажах ваших готовых продуктов, и, что мне больше всего понравилось, как рассчитать стоимость программного продукта.

Как и все программисты, я часто сталкиваюсь с вопросом - сколько будет стоить моя работа над каждым конкретным продуктом. А ведь никому не хочется ошибиться в меньшую сторону, правда? Итак, в книге есть азы маркетинга, применимо к индустрии создания программных продуктов. 
Также, есть главы, посвященные всему циклу подготовки и создания продукта, с его дальнейшей реализацией клиентам, участию в выставках и многое другое.

Есть главы, как подобрать команду, как выбрать помещение. Все это написано на примере IT-компании созданной в США, но многое пригодится и на Российском рынке.

Подведу итог - на мой взгляд, книга достойна того, чтобы ее прочитал каждый IT-шник, который планирует стать однажды во главе своей собственной компании. Кстати, не только по производству программных продуктов. Маркетинг - он везде маркетинг. Только не каждый может о нем так доступно рассказать.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6214778681897485490-5712617387860992905?l=akochurov.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/KkgMMT-4HebpQJsUfnm-LhM26Bs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KkgMMT-4HebpQJsUfnm-LhM26Bs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/KkgMMT-4HebpQJsUfnm-LhM26Bs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/KkgMMT-4HebpQJsUfnm-LhM26Bs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexanderKochurovDevelopersBlog/~4/nHlC0Hr245k" height="1" width="1"/&gt;</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.g?blogID=6214778681897485490&amp;postID=5712617387860992905" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/5712617387860992905?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/5712617387860992905?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexanderKochurovDevelopersBlog/~3/nHlC0Hr245k/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="http://3.bp.blogspot.com/_gQewxFYeApE/S-KAMhZUAuI/AAAAAAAAABw/l2lpCMBp5EA/S220/1.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://akochurov.blogspot.com/2011/09/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUNQ3s7eSp7ImA9WhdQFko.&quot;"><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><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-18T16:24:52.501+04:00</app:edited><title>Полезная утилита 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;
"C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\xsd.exe" &lt;br /&gt;
"C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\xsd.exe" &lt;br /&gt;
"C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\xsd.exe"&lt;br /&gt;
&lt;br /&gt;
Утилита консольная, запускается с разными ключами. На выходе возвращает файл с объектной моделью Вашей базы данных, описанной *.xsd схемой. &lt;br /&gt;
&lt;br /&gt;
Проще не бывает. Надеюсь, это кому-то поможет.&lt;br /&gt;
&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6214778681897485490-4613480876141920387?l=akochurov.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/QtVom-_xpfWiE3JFBjcvBAgz2Qg/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QtVom-_xpfWiE3JFBjcvBAgz2Qg/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/QtVom-_xpfWiE3JFBjcvBAgz2Qg/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QtVom-_xpfWiE3JFBjcvBAgz2Qg/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexanderKochurovDevelopersBlog/~4/tGUAduoBI6k" height="1" width="1"/&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.g?blogID=6214778681897485490&amp;postID=4613480876141920387" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/4613480876141920387?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/4613480876141920387?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexanderKochurovDevelopersBlog/~3/tGUAduoBI6k/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="http://3.bp.blogspot.com/_gQewxFYeApE/S-KAMhZUAuI/AAAAAAAAABw/l2lpCMBp5EA/S220/1.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://akochurov.blogspot.com/2011/08/xsdexe.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE4ARXk9fyp7ImA9WhdQFkg.&quot;"><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><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-18T11:35:44.767+04:00</app:edited><title>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="http://www.nayyeri.net/file-lock-issue-in-visual-studio-when-building-a-project"&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;
Буду искать решение.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6214778681897485490-2563267151145808910?l=akochurov.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/k6bLVJPvDTA6stCuml7vcYgCgfE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/k6bLVJPvDTA6stCuml7vcYgCgfE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/k6bLVJPvDTA6stCuml7vcYgCgfE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/k6bLVJPvDTA6stCuml7vcYgCgfE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexanderKochurovDevelopersBlog/~4/RJebPrVOP1Y" height="1" width="1"/&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.g?blogID=6214778681897485490&amp;postID=2563267151145808910" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/2563267151145808910?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/2563267151145808910?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexanderKochurovDevelopersBlog/~3/RJebPrVOP1Y/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="http://3.bp.blogspot.com/_gQewxFYeApE/S-KAMhZUAuI/AAAAAAAAABw/l2lpCMBp5EA/S220/1.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://akochurov.blogspot.com/2011/08/file-lock-issue-in-visual-studio-when.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkEER3k-eCp7ImA9WhZREUs.&quot;"><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><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-07T12:23:26.750+04:00</app:edited><title>ASP.NET MVC: работа с PartialView</title><content type="html">Удивительное рядом: НЕЛЬЗЯ вызвать PartialView из PartialView.&lt;br /&gt;
Вот кто бы догадался.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6214778681897485490-699138230853782224?l=akochurov.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vrRwpOznZ5kfS_3iiiE1ZqeQfOA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vrRwpOznZ5kfS_3iiiE1ZqeQfOA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vrRwpOznZ5kfS_3iiiE1ZqeQfOA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vrRwpOznZ5kfS_3iiiE1ZqeQfOA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexanderKochurovDevelopersBlog/~4/OPn-FLPYE2U" height="1" width="1"/&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.g?blogID=6214778681897485490&amp;postID=699138230853782224" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/699138230853782224?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/699138230853782224?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexanderKochurovDevelopersBlog/~3/OPn-FLPYE2U/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="http://3.bp.blogspot.com/_gQewxFYeApE/S-KAMhZUAuI/AAAAAAAAABw/l2lpCMBp5EA/S220/1.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://akochurov.blogspot.com/2011/04/aspnet-mvc-partialview.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUIHR34-fip7ImA9WhZREEQ.&quot;"><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><app:edited xmlns:app="http://www.w3.org/2007/app">2011-04-06T16:38:56.056+04:00</app:edited><title>Management Studio: блокировка изменений в структуре таблицы</title><content type="html">Если у Вас при попытке изменить структуру таблицы возникает сообщение о невозможности изменить структуру таблицы без её перегенерации - это значит, что нужно отключить функцию запроса пересоздания таблицы в базе данных. Сделать это можно отключив соответствующую опицию в меню Tools -&gt; Options -&gt; Designers. На этой странице нужно отключить опцию "Prevent saving changes that require table re-creation"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6214778681897485490-1047339466756767562?l=akochurov.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/cqu5mllSsNttnG7pNLGr9naB618/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cqu5mllSsNttnG7pNLGr9naB618/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/cqu5mllSsNttnG7pNLGr9naB618/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/cqu5mllSsNttnG7pNLGr9naB618/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexanderKochurovDevelopersBlog/~4/zLiXqZXRBEo" height="1" width="1"/&gt;</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.g?blogID=6214778681897485490&amp;postID=1047339466756767562" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/1047339466756767562?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/1047339466756767562?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexanderKochurovDevelopersBlog/~3/zLiXqZXRBEo/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="http://3.bp.blogspot.com/_gQewxFYeApE/S-KAMhZUAuI/AAAAAAAAABw/l2lpCMBp5EA/S220/1.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://akochurov.blogspot.com/2011/04/management-studio.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU4AR3w7cSp7ImA9Wx5XE0U.&quot;"><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><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-13T17:19:06.209+04:00</app:edited><title>С Днем программиста!</title><content type="html">Дорогие коллеги!&lt;br /&gt;
&lt;br /&gt;
Поздравляю Вас с профессиональным праздником - Днем программиста!&lt;br /&gt;
Желаю вдохновения, побольше красивого кода, профессионального роста и финансового благополучия!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6214778681897485490-9156893629912016393?l=akochurov.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/CkfSmcU29T3svVTFNziIDReNGsE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CkfSmcU29T3svVTFNziIDReNGsE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/CkfSmcU29T3svVTFNziIDReNGsE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/CkfSmcU29T3svVTFNziIDReNGsE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexanderKochurovDevelopersBlog/~4/yMMYN9Buk0g" height="1" width="1"/&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.g?blogID=6214778681897485490&amp;postID=9156893629912016393" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/9156893629912016393?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/9156893629912016393?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexanderKochurovDevelopersBlog/~3/yMMYN9Buk0g/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="http://3.bp.blogspot.com/_gQewxFYeApE/S-KAMhZUAuI/AAAAAAAAABw/l2lpCMBp5EA/S220/1.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://akochurov.blogspot.com/2010/09/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcEQX44fip7ImA9Wx5QF0s.&quot;"><id>tag:blogger.com,1999:blog-6214778681897485490.post-8926169686743694632</id><published>2010-08-31T16:16:00.006+04:00</published><updated>2010-09-06T12:00:00.036+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-06T12:00:00.036+04:00</app:edited><title>Работа с DBF из C#</title><content type="html">Всем привет!&lt;br /&gt;
У меня на днях возникла необходимость подключить к проекту на C# КЛАДР (Классификатор адресов России) взятый из 1С, как вспомогательный справочник. Если кто не помнит, это несколько таблиц в формате DBF с кодировкой 866 внутри.&lt;br /&gt;
&lt;br /&gt;
В итоге, хочу поделиться тем, что получилось.&lt;br /&gt;
Итак: чтобы подключиться к таблице можно использовать несколько способов. &lt;br /&gt;
1. Использовать Visual FoxPro OLE DB Provider (VfpOleDB.dll);&lt;br /&gt;
2. Использовать драйвер VFPODBC.DLL.&lt;br /&gt;
&lt;br /&gt;
Драйвер &lt;a href="http://msdn.microsoft.com/en-us/vfoxpro/bb190233.aspx"&gt;VFPODBC.DLL&lt;/a&gt; замечательно работает, но есть один недостаток: он не поддерживается компанией Microsoft со времен Windows 2000, о чем и написано на странице загрузки данного драйвера. Там же рекомендуется использовать для работы с DBF драйвер &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=e1a87d8f-2d58-491f-a0fa-95a3289c5fd4&amp;displaylang=en"&gt;VFPOLEDB.DLL&lt;/a&gt;, который поддерживается до сих пор. Немаловажным преимуществом этого драйвера является корректная работа с фалами индексов.&lt;br /&gt;
&lt;br /&gt;
В среде х64 этот драйвер как оказалось cтавится, но в списке драйверов не появляется (что и понятно, он x32).  Однако, я нашел интересное упоминание о программе, входящей в комплект Windows x64: %systemdrive%\Windows\SysWoW64\odbcad32.exe (обчно C:\WINDOWS\SysWOW64\odbcad32.exe). Однако, и эта утилита позволяет лишь создать ODBC алиас для подключения к таблице базы данных. Это хоть и некрасивый, но вариант для x64 - операционных систем.&lt;br /&gt;
&lt;br /&gt;
Чтобы прочитать DBF в кодировке отличной от 1251 даже с помощью драйвера приходится его сначала немного подготовить. А именно - в файле по умолчанию может быть не установлен байт, отвечающий за кодовую страницу. Это приведет к тому, что отображение содержимого таблицы в Вашем проекте примет не читаемый вид (иными словами, Вы увидите абракадабру).&lt;br /&gt;
&lt;br /&gt;
Дальше - дело техники. Открываем таблицу, если нужно, выставляем кодовую страницу, сохраняем, после используем по своему усмотрению.&lt;br /&gt;
&lt;br /&gt;
Так как речь идет о работе с КЛАДР, ниже будет приведен пример для работы с таблицей краев и областей (в упрощенной форме, чтобы продемонстрировать подключение к DBF-файлу).&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.sqlland.ru/index.php?option=com_content&amp;task=view&amp;id=157&amp;Itemid=59"&gt;Исходный код&lt;/a&gt; модуля можно &lt;a href="http://www.sqlland.ru/downloads/opkladr.rar"&gt;загрузить&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6214778681897485490-8926169686743694632?l=akochurov.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WboK5yiZSDxQT-wNJcLMIo5n_Dc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WboK5yiZSDxQT-wNJcLMIo5n_Dc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WboK5yiZSDxQT-wNJcLMIo5n_Dc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WboK5yiZSDxQT-wNJcLMIo5n_Dc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexanderKochurovDevelopersBlog/~4/oITjZx21i-8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://akochurov.blogspot.com/feeds/8926169686743694632/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6214778681897485490&amp;postID=8926169686743694632" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/8926169686743694632?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/8926169686743694632?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexanderKochurovDevelopersBlog/~3/oITjZx21i-8/c-1.html" title="Работа с DBF из 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="http://3.bp.blogspot.com/_gQewxFYeApE/S-KAMhZUAuI/AAAAAAAAABw/l2lpCMBp5EA/S220/1.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://akochurov.blogspot.com/2010/08/c-1.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE8NRXkyeip7ImA9WxFXFkQ.&quot;"><id>tag:blogger.com,1999:blog-6214778681897485490.post-3111104802206184626</id><published>2010-05-24T14:28:00.000+04:00</published><updated>2010-05-24T14:28:14.792+04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-05-24T14:28:14.792+04:00</app:edited><title>Microsoft Robotics Developer Studio 2008 R3 безвозмездно! Т.е. ДАРОМ!</title><content type="html">Итак, любителям интеллектуальной и IT халявы, посвящается :) &lt;br /&gt;
В мире, где за каждым углом подстерегает закон о защите авторских прав, иногда случаются вот такие приятные сюрпризы. А именно: компания Microsoft анонсировала бесплатное распространение &lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;FamilyID=c185a802-5bbe-4f28-b448-aefe63a7eff7"&gt;Microsoft Robotics Developer Studio 2008 R3&lt;/a&gt;. Её теперь можно загрузить бесплатно.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6214778681897485490-3111104802206184626?l=akochurov.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/GzvW2k_6a15zUZ4lpnORHnQizVY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GzvW2k_6a15zUZ4lpnORHnQizVY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/GzvW2k_6a15zUZ4lpnORHnQizVY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GzvW2k_6a15zUZ4lpnORHnQizVY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/AlexanderKochurovDevelopersBlog/~4/ShKPjPqmPW4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://akochurov.blogspot.com/feeds/3111104802206184626/comments/default" title="Комментарии к сообщению" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=6214778681897485490&amp;postID=3111104802206184626" title="Комментарии: 0" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/3111104802206184626?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6214778681897485490/posts/default/3111104802206184626?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/AlexanderKochurovDevelopersBlog/~3/ShKPjPqmPW4/microsoft-robotics-developer-studio.html" title="Microsoft Robotics Developer Studio 2008 R3 безвозмездно! Т.е. ДАРОМ!" /><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="http://3.bp.blogspot.com/_gQewxFYeApE/S-KAMhZUAuI/AAAAAAAAABw/l2lpCMBp5EA/S220/1.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://akochurov.blogspot.com/2010/05/microsoft-robotics-developer-studio.html</feedburner:origLink></entry></feed>

