<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_重典的博客</title><subtitle type="text">实践推动发展</subtitle><id>http://feed.cnblogs.com/blog/u/24085/rss</id><updated>2012-05-11T07:44:04Z</updated><author><name>重典</name><uri>http://www.cnblogs.com/chsword/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/chsword/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/24085/rss"/><entry><id>http://www.cnblogs.com/chsword/archive/2012/05/11/2496225.html</id><title type="text">Entity Framework 5 新特性</title><summary type="text">枚举类型支持 性能增强，特别是.NET 4.5中 自动使用localDb及SQLServerExpress 支持表值函数 References: http://www.infoq.com/cn/news/2012/02/EF-5 http://blogs.msdn.com/b/adonet/archive/2012/03/22/ef5-beta-2-availabl...</summary><published>2012-05-11T07:44:00Z</published><updated>2012-05-11T07:44:00Z</updated><author><name>重典</name><uri>http://www.cnblogs.com/chsword/</uri></author><link rel="alternate" href="http://www.cnblogs.com/chsword/archive/2012/05/11/2496225.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/chsword/archive/2012/05/11/2496225.html"/><content type="html">&lt;ol&gt;   &lt;li&gt;枚举类型支持&lt;/li&gt;    &lt;li&gt;性能增强，特别是.NET 4.5中&lt;/li&gt;    &lt;li&gt;自动使用localDb及SQLServerExpress&lt;/li&gt;    &lt;li&gt;支持表值函数&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;References:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.infoq.com/cn/news/2012/02/EF-5"&gt;http://www.infoq.com/cn/news/2012/02/EF-5&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blogs.msdn.com/b/adonet/archive/2012/03/22/ef5-beta-2-available-on-nuget.aspx" href="http://blogs.msdn.com/b/adonet/archive/2012/03/22/ef5-beta-2-available-on-nuget.aspx"&gt;http://blogs.msdn.com/b/adonet/archive/2012/03/22/ef5-beta-2-available-on-nuget.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://aspnetwebstack.codeplex.com/wikipage?title=Contributing&amp;amp;referringTitle=Home" href="http://aspnetwebstack.codeplex.com/wikipage?title=Contributing&amp;amp;referringTitle=Home"&gt;http://aspnetwebstack.codeplex.com/wikipage?title=Contributing&amp;amp;referringTitle=Home&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/chsword/aggbug/2496225.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/chsword/archive/2012/05/11/2496225.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/chsword/archive/2012/05/11/2496163.html</id><title type="text">使用PreApplicationStartMethodAttribute添加Application_Start事件</title><summary type="text">先预备一个类，用于Start时调用 public static class MyPreApplicationStart { public static void RegisterGlobalFilters(GlobalFilterCollection filters) { if (filters !=...</summary><published>2012-05-11T07:19:00Z</published><updated>2012-05-11T07:19:00Z</updated><author><name>重典</name><uri>http://www.cnblogs.com/chsword/</uri></author><link rel="alternate" href="http://www.cnblogs.com/chsword/archive/2012/05/11/2496163.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/chsword/archive/2012/05/11/2496163.html"/><content type="html">&lt;p&gt;先预备一个类，用于Start时调用&lt;/p&gt;  &lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; MyPreApplicationStart&lt;!--CRLF--&gt;       {&lt;!--CRLF--&gt;           &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; RegisterGlobalFilters(GlobalFilterCollection filters)&lt;!--CRLF--&gt;           {&lt;!--CRLF--&gt;               &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (filters != &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;)&lt;!--CRLF--&gt;                   filters.Add(&lt;span style="color: #0000ff"&gt;new&lt;/span&gt; HandleErrorAttribute());&lt;!--CRLF--&gt;           }&lt;!--CRLF--&gt;    &amp;#160;&lt;!--CRLF--&gt;           &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Start()&lt;!--CRLF--&gt;           {&lt;!--CRLF--&gt;               RegisterGlobalFilters(GlobalFilters.Filters);&lt;!--CRLF--&gt;           }&lt;!--CRLF--&gt;       }&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;这之后通过PreApplicationStartMethodAttribute注册到assembly即可，需要注意的是自定义类必须public ,其中用记Start的方法必须public static &lt;/div&gt;&lt;div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;  &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;    [assembly: PreApplicationStartMethod(&lt;span style="color: #0000ff"&gt;typeof&lt;/span&gt;(MyPreApplicationStart), &lt;span style="color: #006080"&gt;&amp;quot;Start&amp;quot;&lt;/span&gt;)]&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Reference:&lt;/p&gt;&lt;p&gt;&lt;a title="http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&amp;amp;l=ZH-CN&amp;amp;k=k(SYSTEM.WEB.PREAPPLICATIONSTARTMETHODATTRIBUTE);k(TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV4.0%22);k(DevLang-CSHARP)&amp;amp;rd=true" href="http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&amp;amp;l=ZH-CN&amp;amp;k=k(SYSTEM.WEB.PREAPPLICATIONSTARTMETHODATTRIBUTE);k(TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV4.0%22);k(DevLang-CSHARP)&amp;amp;rd=true"&gt;http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&amp;amp;l=ZH-CN&amp;amp;k=k(SYSTEM.WEB.PREAPPLICATIONSTARTMETHODATTRIBUTE);k(TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV4.0%22);k(DevLang-CSHARP)&amp;amp;rd=true&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a title="http://msdn.microsoft.com/zh-cn/library/gg401977(v=vs.98)" href="http://msdn.microsoft.com/zh-cn/library/gg401977(v=vs.98)"&gt;http://msdn.microsoft.com/zh-cn/library/gg401977(v=vs.98)&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/chsword/aggbug/2496163.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/chsword/archive/2012/05/11/2496163.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/chsword/archive/2012/05/11/fxcop_dataflowrules.html</id><title type="text">FxCop 使用Data Flow Rules</title><summary type="text">FxCop的UI并未提供Phoenix engine的支持，也就是以下这些验证规则通过FxCop的 UI没有办法验证，但是可以通过FxCopCmd来验证CA1062 Validate Arguments of Public MethodsCA1303 Do Not Pass Literals as Localized ParametersCA2000 Dispose Objects Before Losing ScopeCA2100 Review SQL Queries For Security VulnerabilitiesCA2202 Do Not Dispose Objects Mult</summary><published>2012-05-11T00:51:00Z</published><updated>2012-05-11T00:51:00Z</updated><author><name>重典</name><uri>http://www.cnblogs.com/chsword/</uri></author><link rel="alternate" href="http://www.cnblogs.com/chsword/archive/2012/05/11/fxcop_dataflowrules.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/chsword/archive/2012/05/11/fxcop_dataflowrules.html"/><content type="html">&lt;p&gt;FxCop的UI并未提供Phoenix engine的支持，也就是以下这些验证规则通过FxCop的 UI没有办法验证，但是可以通过FxCopCmd来验证&lt;/p&gt;&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms182182(VS.100).aspx"&gt;CA1062 Validate Arguments of Public Methods&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms182187(VS.100).aspx"&gt;CA1303 Do Not Pass Literals as Localized Parameters&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms182289(VS.100).aspx"&gt;CA2000 Dispose Objects Before Losing Scope&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms182310(VS.100).aspx"&gt;CA2100 Review SQL Queries For Security Vulnerabilities&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms182334(VS.100).aspx"&gt;CA2202 Do Not Dispose Objects Multiple Times&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb264488(VS.100).aspx"&gt;CA2204 Literals Should Be Spelled Correctly&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms182330(VS.100).aspx"&gt;CA2215 Dispose Methods Should Call Base Class Dispose&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms182361(VS.100).aspx"&gt;CA2241 Provide Correct Arguments to Formatting Methods&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;可以通过对.FxCop文件添加规则来实现&lt;/p&gt;&lt;div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;"&gt;&lt;div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;FxCopProject&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Version&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="10.0"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Name&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="My FxCop Project"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;!--CRLF--&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Rules&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;!--CRLF--&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;    &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;RuleFiles&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;!--CRLF--&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;    &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;RuleFile&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Name&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="$(ProjectDir)/../Rules/DataflowRules.dll"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Enabled&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="True"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;AllRulesEnabled&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="True"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;AllRulesBreakBuild&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="True"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;!--CRLF--&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;    &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;RuleFiles&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;!--CRLF--&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;Rules&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;!--CRLF--&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;  &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;FxCopProject&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;DataflowRules.dll文件可以在%Program Files%\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\Rules中找到，XML的路径可以自己视情况添加&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Reference:&lt;/p&gt;&lt;p&gt;&lt;a title="http://blogs.msdn.com/b/codeanalysis/archive/2010/04/14/data-flow-analysis-rules-in-visual-studio-2010.aspx" href="http://blogs.msdn.com/b/codeanalysis/archive/2010/04/14/data-flow-analysis-rules-in-visual-studio-2010.aspx"&gt;http://blogs.msdn.com/b/codeanalysis/archive/2010/04/14/data-flow-analysis-rules-in-visual-studio-2010.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a title="http://msdn.microsoft.com/zh-cn/library/bb429449(v=vs.80).aspx" href="http://msdn.microsoft.com/zh-cn/library/bb429449(v=vs.80).aspx"&gt;http://msdn.microsoft.com/zh-cn/library/bb429449(v=vs.80).aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd264939"&gt;http://msdn.microsoft.com/en-us/library/dd264939&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/chsword/aggbug/2495364.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/chsword/archive/2012/05/11/fxcop_dataflowrules.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/chsword/archive/2012/02/28/dotnet_rsa_use_openssl_pem_key.html</id><title type="text">.NET 使用OpenSSL生成的pem文件做为RSA Key时的读取问题</title><summary type="text">.NET的RSA算法的Key格式与OpenSSL生成的Key格式不兼容谭振林兄有写一篇.NET使用OpenSSL生成的pem密钥文件(增加size为2048的密钥转换)【做电子商务的朋友可能需要】但是其中在有些位长的Key的情况下，私钥的转换会出现问题于是找到另外一篇Creating a X509 certificate from a RSA Private Key in PEM file就可以比较好的解决RSA中的私钥转换问题</summary><published>2012-02-28T11:06:00Z</published><updated>2012-02-28T11:06:00Z</updated><author><name>重典</name><uri>http://www.cnblogs.com/chsword/</uri></author><link rel="alternate" href="http://www.cnblogs.com/chsword/archive/2012/02/28/dotnet_rsa_use_openssl_pem_key.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/chsword/archive/2012/02/28/dotnet_rsa_use_openssl_pem_key.html"/><content type="html">&lt;p&gt;.NET的RSA算法的Key格式与OpenSSL生成的Key格式不兼容&lt;/p&gt;&lt;p&gt;谭振林兄有写一篇&lt;br /&gt;&lt;a id="cb_post_title_url" href="http://www.cnblogs.com/think/archive/2009/09/10/ConvertPem2048ToRSAParemeters.html"&gt;.NET使用OpenSSL生成的pem密钥文件(增加size为2048的密钥转换)【做电子商务的朋友可能需要】&lt;/a&gt;&lt;/p&gt;&lt;p&gt;但是其中在有些位长的Key的情况下，私钥的转换会出现问题&lt;/p&gt;&lt;p&gt;于是&lt;/p&gt;&lt;p&gt;找到另外一篇&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.go4answers.com/Example/creating-x509-certificate-rsa-private-49617.aspx"&gt;Creating a X509 certificate from a RSA Private Key in PEM file&lt;/a&gt;&lt;/p&gt;&lt;p&gt;就可以比较好的解决RSA中的私钥转换问题&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/chsword/aggbug/2372084.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/chsword/archive/2012/02/28/dotnet_rsa_use_openssl_pem_key.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/chsword/archive/2011/12/17/2290819.html</id><title type="text">Windows Phone Developer Tools HRESULT: 0x89721800错误的解决方法</title><summary type="text">可以通过删除 %LOCALAPPDATA%\Microsoft\Phone Tools\CoreCon\10.0 来解决删除前请先备份相关资源http://www.sadev.co.za/content/windows-8-how-get-it-working</summary><published>2011-12-16T16:01:00Z</published><updated>2011-12-16T16:01:00Z</updated><author><name>重典</name><uri>http://www.cnblogs.com/chsword/</uri></author><link rel="alternate" href="http://www.cnblogs.com/chsword/archive/2011/12/17/2290819.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/chsword/archive/2011/12/17/2290819.html"/><content type="html">&lt;p&gt;可以通过删除 %LOCALAPPDATA%\Microsoft\Phone Tools\CoreCon\10.0 来解决&lt;/p&gt;&lt;p&gt;删除前请先备份&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;相关资源&lt;/p&gt;&lt;p&gt;&lt;a title="http://www.sadev.co.za/content/windows-8-how-get-it-working" href="http://www.sadev.co.za/content/windows-8-how-get-it-working"&gt;http://www.sadev.co.za/content/windows-8-how-get-it-working&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/chsword/aggbug/2290819.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/chsword/archive/2011/12/17/2290819.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/chsword/archive/2011/12/12/nuget_update_task.html</id><title type="text">按Solution获取已经引用的NuGet的Package</title><summary type="text">NuGet是个不错的东西，在项目中，NuGet都会将下载的文件保存在packages文件夹里很多时候我并不想将所有的Package都上传到源代码管理中去。</summary><published>2011-12-12T12:05:00Z</published><updated>2011-12-12T12:05:00Z</updated><author><name>重典</name><uri>http://www.cnblogs.com/chsword/</uri></author><link rel="alternate" href="http://www.cnblogs.com/chsword/archive/2011/12/12/nuget_update_task.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/chsword/archive/2011/12/12/nuget_update_task.html"/><content type="html">&lt;p&gt;NuGet是个不错的东西，在项目中，NuGet都会将下载的文件保存在packages文件夹里&lt;/p&gt;&lt;p&gt;很多时候我并不想将所有的Package都上传到源代码管理中去。&lt;/p&gt;&lt;p&gt;但NuGet只提供了按Project去获取NuGet的方法。于是还是自己写一个工具来完成这个任务吧。&lt;/p&gt;&lt;p&gt;为了日后可以方便地集成到Build的过程中去，所以使用Msbuild的Task去做这件事会具有更好的扩展性。&lt;/p&gt;&lt;p&gt;一、首先，需要一个NuGet的MsBuild的Task包，这个NuGet已经提供了&lt;/p&gt;&lt;p&gt;&lt;a title="http://nuget.codeplex.com/SourceControl/list/changesets" href="http://nuget.codeplex.com/SourceControl/list/changesets"&gt;http://nuget.codeplex.com/SourceControl/list/changesets&lt;/a&gt;&lt;/p&gt;&lt;p&gt;下载后编译使用NuGet.MSBuild.dll即可，另外还需要NuGet.Core.dll和NuGet.targets（编译后会和NuGet.MSBuild在一起）&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/chsword/201112/201112122004344992.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://images.cnblogs.com/cnblogs_com/chsword/201112/201112122004353630.png" alt="image" width="280" height="75" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;二、packages文件夹中有repositories.config文件&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/chsword/201112/201112122004357599.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://images.cnblogs.com/cnblogs_com/chsword/201112/201112122004361569.png" alt="image" width="366" height="110" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;这里面包含着所有引用有NuGet包的Project的路径，我们要解析这个文件，所以我决定使用MSBuild.Community.Tasks.dll（&lt;a title="http://msbuildtasks.tigris.org/" href="http://msbuildtasks.tigris.org/"&gt;http://msbuildtasks.tigris.org/&lt;/a&gt;）&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/chsword/201112/20111212200436207.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://images.cnblogs.com/cnblogs_com/chsword/201112/201112122004378844.png" alt="image" width="264" height="73" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;三、预备工作OK了，当然我们存放文件得有点规矩&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;p&gt;lib\NuGet &lt;br /&gt;lib\msbuild\ICSharpCode.SharpZipLib.dll &lt;br /&gt;lib\msbuild\MSBuild.Community.Tasks.dll &lt;br /&gt;lib\msbuild\MSBuild.Community.Tasks.Targets &lt;br /&gt;lib\NuGet\NuGet.Core.dll &lt;br /&gt;lib\NuGet\NuGet.MSBuild.dll &lt;br /&gt;lib\NuGet\NuGet.targets&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;那么下面我们来搞定一个MsBuild的Project文件&lt;/p&gt;&lt;div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;"&gt;&lt;div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #800000;"&gt;xml&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;version&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="1.0"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;encoding&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="utf-8"&lt;/span&gt;?&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;!--CRLF--&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Project&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;DefaultTargets&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="UpdateNuGet"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;ToolsVersion&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="4.0"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;xmlns&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="http://schemas.microsoft.com/developer/msbuild/2003"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;!--CRLF--&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt;   &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;PropertyGroup&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;!--CRLF--&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;LibFolder&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;$(MSBuildProjectDirectory)\Lib&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;LibFolder&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;!--CRLF--&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;OnlineSource&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;$(MSBuildProjectDirectory)&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;OnlineSource&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;!--CRLF--&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;NuGetRepositoryPath&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;$(OnlineSource)\packages&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;NuGetRepositoryPath&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;!--CRLF--&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;NuGetRepositoryConfig&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;$(NuGetRepositoryPath)\repositories.config&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;NuGetRepositoryConfig&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;!--CRLF--&gt;&lt;span id="lnum8" style="color: #606060;"&gt;   8:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;NuGetSources&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;http://go.microsoft.com/fwlink/?LinkId=206669&lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;NuGetSources&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;!--CRLF--&gt;&lt;span id="lnum9" style="color: #606060;"&gt;   9:&lt;/span&gt;   &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;PropertyGroup&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;!--CRLF--&gt;&lt;span id="lnum10" style="color: #606060;"&gt;  10:&lt;/span&gt;   &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Import&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Project&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="$(LibFolder)\msbuild\MSBuild.Community.Tasks.Targets"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;!--CRLF--&gt;&lt;span id="lnum11" style="color: #606060;"&gt;  11:&lt;/span&gt;   &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Import&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Project&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="$(LibFolder)\NuGet\NuGet.targets"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;!--CRLF--&gt;&lt;span id="lnum12" style="color: #606060;"&gt;  12:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Target&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Name&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="UpdateNuGet"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;!--CRLF--&gt;&lt;span id="lnum13" style="color: #606060;"&gt;  13:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;XmlRead&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;XPath&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="//@path"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;XmlFileName&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="$(NuGetRepositoryConfig)"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;!--CRLF--&gt;&lt;span id="lnum14" style="color: #606060;"&gt;  14:&lt;/span&gt;           &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;Output&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;TaskParameter&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="Value"&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;PropertyName&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="NuGetPackageFiles"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;!--CRLF--&gt;&lt;span id="lnum15" style="color: #606060;"&gt;  15:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;XmlRead&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;!--CRLF--&gt;&lt;span id="lnum16" style="color: #606060;"&gt;  16:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;ItemGroup&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;!--CRLF--&gt;&lt;span id="lnum17" style="color: #606060;"&gt;  17:&lt;/span&gt;             &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;_NuGetPackages&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;Include&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="$(NuGetPackageFiles.Split(';'))"&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;!--CRLF--&gt;&lt;span id="lnum18" style="color: #606060;"&gt;  18:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;ItemGroup&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;!--CRLF--&gt;&lt;span id="lnum19" style="color: #606060;"&gt;  19:&lt;/span&gt;         &lt;span style="color: #0000ff;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;NuGetFetch&lt;/span&gt; &lt;span style="color: #ff0000;"&gt;PackageDir&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="$(NuGetRepositoryPath)"&lt;/span&gt;&lt;!--CRLF--&gt;&lt;span id="lnum20" style="color: #606060;"&gt;  20:&lt;/span&gt;         &lt;span style="color: #ff0000;"&gt;PackageConfigFile&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="$([System.IO.Path]::GetFullPath($([System.IO.Path]::Combine($(NuGetRepositoryPath),%(_NuGetPackages.Identity)))))"&lt;/span&gt; &lt;!--CRLF--&gt;&lt;span id="lnum21" style="color: #606060;"&gt;  21:&lt;/span&gt;         &lt;span style="color: #ff0000;"&gt;Sources&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;="$(NuGetSources)"&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;/&amp;gt;&lt;/span&gt;&lt;!--CRLF--&gt;&lt;span id="lnum22" style="color: #606060;"&gt;  22:&lt;/span&gt;     &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;Target&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;!--CRLF--&gt;&lt;span id="lnum23" style="color: #606060;"&gt;  23:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000;"&gt;Project&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;&amp;gt;&lt;/span&gt;&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;将之存为UpdateNuGet.proj&lt;/p&gt;&lt;p&gt;四、接下来只有调用的问题了，我们可以通过批处理去调用&lt;/p&gt;&lt;div id="codeSnippetWrapper" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; width: 97.5%; font-family: 'Courier New', courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; cursor: text; border: silver 1px solid; padding: 4px;"&gt;&lt;div id="codeSnippet" style="text-align: left; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: 'Courier New', courier, monospace; direction: ltr; color: black; font-size: 8pt; overflow: visible; border-style: none; padding: 0px;"&gt;&lt;span id="lnum1" style="color: #606060;"&gt;   1:&lt;/span&gt; @echo Off&lt;!--CRLF--&gt;&lt;span id="lnum2" style="color: #606060;"&gt;   2:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; config=%1&lt;!--CRLF--&gt;&lt;span id="lnum3" style="color: #606060;"&gt;   3:&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; &lt;span style="color: #006080;"&gt;"%config%"&lt;/span&gt; == &lt;span style="color: #006080;"&gt;""&lt;/span&gt; (&lt;!--CRLF--&gt;&lt;span id="lnum4" style="color: #606060;"&gt;   4:&lt;/span&gt;   &lt;span style="color: #0000ff;"&gt;set&lt;/span&gt; config=debug&lt;!--CRLF--&gt;&lt;span id="lnum5" style="color: #606060;"&gt;   5:&lt;/span&gt; )&lt;!--CRLF--&gt;&lt;span id="lnum6" style="color: #606060;"&gt;   6:&lt;/span&gt;&amp;nbsp; &lt;!--CRLF--&gt;&lt;span id="lnum7" style="color: #606060;"&gt;   7:&lt;/span&gt; %WINDIR%\Microsoft.NET\Framework\v4.0.30319\msbuild UpdateNuGet.proj&lt;!--CRLF--&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;将之存为UpdateNuGet.bat这样我们就可以在获取代码之后，运行UpdateNuGet.bat来获取所有的NuGet Package了&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;当然我们也可以在Project编辑时设置BeforeBuild的事件来获取&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;下载所有文件（解压到解决方案根目录即可）&lt;/p&gt;&lt;p&gt;&lt;iframe style="padding: 0px; background-color: #fcfcfc;" title="Preview" src="https://skydrive.live.com/embed?cid=CBC2DDF168D9DA0B&amp;amp;resid=CBC2DDF168D9DA0B%211749&amp;amp;authkey=ALbEz14fkM21IdY" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="98" height="120"&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/chsword/aggbug/2285248.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/chsword/archive/2011/12/12/nuget_update_task.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/chsword/archive/2011/10/17/PowerShell_4.html</id><title type="text">PowerShell 远程连接与其它技巧</title><summary type="text">远程连接 •1.通过WinRM quickconfig配置可以通过WinRM访问 •2.访问WSMAN，将主机名配置到TrustedHosts •3.通过Enter-PSSession连接主机 ...</summary><published>2011-10-17T14:11:00Z</published><updated>2011-10-17T14:11:00Z</updated><author><name>重典</name><uri>http://www.cnblogs.com/chsword/</uri></author><link rel="alternate" href="http://www.cnblogs.com/chsword/archive/2011/10/17/PowerShell_4.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/chsword/archive/2011/10/17/PowerShell_4.html"/><content type="html">&lt;p&gt;&lt;strong&gt;远程连接&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;bull;1.通过WinRM quickconfig配置可以通过WinRM访问&lt;/p&gt;&lt;p&gt;&amp;bull;2.访问WSMAN，将主机名配置到TrustedHosts&lt;/p&gt;&lt;p&gt;&amp;bull;3.通过Enter-PSSession连接主机&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;WMI远程连接&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;bull;执行远程命令Invoke-Command -ComputerName 192.168.1.110 -ScriptBlock{$p=get-process}&lt;/p&gt;&lt;p&gt;&amp;bull;访问远程对象 [WMI]'\\chsword-pc\root\cimv2:Win32_Process.Handle="1804"'&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Profile&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;bull;$Profile即为存储 Profile文件的地址&lt;/p&gt;&lt;p&gt;&amp;bull;通过notepad $profile可以编辑&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;执行脚本&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;bull;将脚本存为ps1文件&lt;/p&gt;&lt;p&gt;&amp;bull;执行set-executionpolicy remotesigned 允许脚本执行&lt;/p&gt;&lt;p&gt;&amp;bull;输入 .\xxx.ps1 即可&lt;/p&gt;&lt;img src="http://www.cnblogs.com/chsword/aggbug/2215902.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/chsword/archive/2011/10/17/PowerShell_4.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/chsword/archive/2011/10/17/PowerShell_3.html</id><title type="text">PowerShell 语法</title><summary type="text">本文讲解了PowerShell脚本的语法</summary><published>2011-10-17T13:16:00Z</published><updated>2011-10-17T13:16:00Z</updated><author><name>重典</name><uri>http://www.cnblogs.com/chsword/</uri></author><link rel="alternate" href="http://www.cnblogs.com/chsword/archive/2011/10/17/PowerShell_3.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/chsword/archive/2011/10/17/PowerShell_3.html"/><content type="html">&lt;p&gt;&lt;strong&gt;注释&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;bull;#语句&lt;/p&gt;&lt;p&gt;&amp;bull;&amp;lt;# 语句 #&amp;gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;变量&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;bull;命名法则 $ 做为前缀&lt;/p&gt;&lt;p&gt;&amp;bull;使用字母、数字、下划线均可&lt;/p&gt;&lt;p&gt;&amp;bull;查看所有变量 Get-ChildItem variable:或Get-Varialbe&lt;/p&gt;&lt;p&gt;&amp;bull;获取作用域变量Get-Variable &amp;ndash;Scope [Local|Global]&lt;/p&gt;&lt;p&gt;&amp;bull;实例化对象 $dt=New-Object DateTime&lt;/p&gt;&lt;p&gt;&lt;strong&gt;数组&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;bull;定义$arr=1,2,3,4&lt;/p&gt;&lt;p&gt;&amp;bull;$arr=1..4&lt;/p&gt;&lt;p&gt;&amp;bull;取值 $arr[1,3]、 $arr[1,3+2]、 $arr[1..3+2]&lt;/p&gt;&lt;p&gt;&amp;bull;赋值 $a,$b=1,2、 $b,$a=$a,$b&lt;/p&gt;&lt;p&gt;&amp;bull;运算符 +操作符进行数组合并&lt;/p&gt;&lt;p&gt;&amp;bull;比较运算符可筛选数组内容&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Hashtable&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;bull;PowerShell中自然集成Hashtable&lt;/p&gt;&lt;p&gt;&amp;bull;定义方式 @{a=1;b=&amp;ldquo;t&amp;rdquo;}&lt;/p&gt;&lt;p&gt;&amp;bull;合并操作符@{a=1}+@{b=2}&lt;/p&gt;&lt;p&gt;&amp;bull;取值 $ht=@{a=1} 则使用$ht[&amp;ldquo;a&amp;rdquo;] $ht.a均可&lt;/p&gt;&lt;p&gt;&amp;bull;其它操作方法与CRL对象一致&lt;/p&gt;&lt;p&gt;&lt;strong&gt;字符串/其它对象&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;bull;多行字符串 @&amp;rdquo;....&amp;rdquo;@&lt;/p&gt;&lt;p&gt;&amp;bull;字符转义`符号如&amp;rdquo;`n&amp;rdquo;&lt;/p&gt;&lt;p&gt;&amp;bull;字符串复制 &amp;ldquo;a&amp;rdquo;*2&lt;/p&gt;&lt;p&gt;&amp;bull;将字符串转为XML对象[xml]"&amp;lt;a&amp;gt;12&amp;lt;/a&amp;gt;"&lt;/p&gt;&lt;p&gt;&lt;strong&gt;过程控制&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;bull;if(){}elseif{}else{}&lt;/p&gt;&lt;p&gt;&amp;bull;switch(){value1{&amp;hellip;;break}value2{&amp;hellip;.;break}}&lt;/p&gt;&lt;p&gt;&amp;bull;foreach($xxx in $yyy){}&lt;/p&gt;&lt;p&gt;&amp;bull;for($i=0;$i &amp;ndash;le 100;$i++){}&lt;/p&gt;&lt;p&gt;&amp;bull;while(){}&lt;/p&gt;&lt;p&gt;&amp;bull;do{}while()&lt;/p&gt;&lt;p&gt;&amp;bull;do{}until()&lt;/p&gt;&lt;p&gt;&lt;strong&gt;方法&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;function methodName {&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;p&gt;param ($size)#参数&lt;/p&gt;&lt;/blockquote&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;p&gt;#执行的语句&lt;/p&gt;&lt;p&gt;}&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;或&lt;/p&gt;&lt;p&gt;function methodName ($p){&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;p&gt;#执行的语句&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;}&lt;/p&gt;&lt;p&gt;&lt;strong&gt;CLR/DLR对象&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;bull;Static成员访问 [DateTime]::Now&lt;/p&gt;&lt;p&gt;&amp;bull;实例化 $dt=new-object DateTime(1999,9,9);&lt;/p&gt;&lt;p&gt;&amp;bull;实例成员的访问 $dt.AddDays(100)&lt;/p&gt;&lt;p&gt;&amp;bull;泛型类型的使用 $l=new-object System.Collections.Generic.List[int]&lt;/p&gt;&lt;p&gt;&amp;bull;获取对象的所有成员 Get-Member &amp;ndash;InputObject $l&lt;/p&gt;&lt;img src="http://www.cnblogs.com/chsword/aggbug/2215858.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/chsword/archive/2011/10/17/PowerShell_3.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/chsword/archive/2011/10/17/PowerShell_2.html</id><title type="text">PowerShell命令</title><summary type="text">关于PowerShell命令的一些基本知识 •PowerShell的命令叫做cmdlet •具有一致的命名规范，都采用动词-名词形式，如New-Item •动词部分一般为Add、New、Get、...</summary><published>2011-10-17T12:57:00Z</published><updated>2011-10-17T12:57:00Z</updated><author><name>重典</name><uri>http://www.cnblogs.com/chsword/</uri></author><link rel="alternate" href="http://www.cnblogs.com/chsword/archive/2011/10/17/PowerShell_2.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/chsword/archive/2011/10/17/PowerShell_2.html"/><content type="html">&lt;p&gt;&lt;strong&gt;关于PowerShell命令的一些基本知识&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;bull;PowerShell的命令叫做cmdlet&lt;/p&gt;&lt;p&gt;&amp;bull;具有一致的命名规范，都采用动词-名词形式，如New-Item&lt;/p&gt;&lt;p&gt;&amp;bull;动词部分一般为Add、New、Get、Remove、Set等&lt;/p&gt;&lt;p&gt;&amp;bull;命令的别名一般兼容Windows Command以及Linux Shell，如Get-ChildItem命令使用dir或ls均可&lt;/p&gt;&lt;p&gt;&amp;bull;PowerShell 命令产生的结果都是DLR对象&lt;/p&gt;&lt;p&gt;&amp;bull;PowerShell命令不区分大小写&lt;/p&gt;&lt;p&gt;&lt;strong&gt;以文件操作为例讲解PowerShell命令的基本用法&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;bull;新建目录 New-Item b2 -ItemType Directory&lt;/p&gt;&lt;p&gt;&amp;bull;新建文件 New-Item a.txt -ItemType File&lt;/p&gt;&lt;p&gt;&amp;bull;删除目录 Remove-Item b2&lt;/p&gt;&lt;p&gt;&amp;bull;递归列pre开头的文件或目录，只列出名称 Get-ChildItem -Recurse -Name -Filter "pre*&amp;ldquo;&lt;/p&gt;&lt;p&gt;&amp;bull;显示文本内容 Get-Content a.txt&lt;/p&gt;&lt;p&gt;&amp;bull;设置文本内容 Set-Content a.txt -Value "content1&amp;ldquo;&lt;/p&gt;&lt;p&gt;&amp;bull;追加内容 Add-Content a.txt -Value &amp;ldquo;content2&amp;ldquo;&lt;/p&gt;&lt;p&gt;&amp;bull;清除内容 Clear-Content a.txt&lt;/p&gt;&lt;p&gt;&lt;strong&gt;使用帮助&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;bull;使用CHM查看帮助：在任务栏PowerShell图标上点右键即可&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/chsword/201110/201110172056317674.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/chsword/201110/201110172056315133.png" width="218" height="288" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;bull;Get-Help命令(man/help)，默认为精简，如果要查看全帮助，可使用 &amp;ndash;Full 参数&lt;/p&gt;&lt;p&gt;&amp;bull;例：查找关于Content的帮助 Get-Help Content&lt;/p&gt;&lt;p&gt;&lt;strong&gt;获取cmdlet命令&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;bull;使用Get-Command(gcm)&lt;/p&gt;&lt;p&gt;&amp;bull;获取Connent相关命令 gcm *Content*&lt;/p&gt;&lt;p&gt;&lt;strong&gt;别名（Alias）&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;bull;显示所有命令的别名gal(Get-Alias)&lt;/p&gt;&lt;p&gt;&amp;bull;新建别名 New-Alias tt Get-ChildItem&lt;/p&gt;&lt;p&gt;&amp;bull;设置别名Set-Alias ls1 Get-ChildItem&lt;/p&gt;&lt;p&gt;&amp;bull;导出别名列表 Export-Alias -Path alias.txt&lt;/p&gt;&lt;p&gt;&amp;bull;导入别名列表 Import-Alias -Path alias.txt&lt;/p&gt;&lt;p&gt;&lt;strong&gt;格式化输出&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;bull;Format-Wide eg: ls | Format-Wide&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/chsword/201110/201110172056321196.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/chsword/201110/201110172056327260.png" width="568" height="268" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;bull;Format-List ：以Key:Value形式展现&lt;/p&gt;&lt;p&gt;&amp;bull;Format-Table：以列表展现&lt;/p&gt;&lt;p&gt;&amp;bull;Format-Custom：以对象的层次关系展现&lt;/p&gt;&lt;p&gt;&lt;strong&gt;管道处理&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;bull;循环处理 ls -Name | foreach {$_+"dsf"}&lt;/p&gt;&lt;p&gt;&amp;bull;筛选 ls | where {$_ -match &amp;ldquo;admin&amp;rdquo;}&lt;/p&gt;&lt;p&gt;&amp;bull;排序 ls | Sort-Object -Descending -Property length -Unique&lt;/p&gt;&lt;p&gt;&amp;bull;选择 ls | Select-Object -Skip 10 -First 10&lt;/p&gt;&lt;img src="http://www.cnblogs.com/chsword/aggbug/2215841.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/chsword/archive/2011/10/17/PowerShell_2.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/chsword/archive/2011/10/17/PowerShell_1.html</id><title type="text">PowerShell 简介</title><summary type="text">经常使用PowerShell，却从未在博客中介绍过它 最近正好做了个PowerShell的技术分享，所以将内容共享出来，希望对初学者有所帮助</summary><published>2011-10-17T12:42:00Z</published><updated>2011-10-17T12:42:00Z</updated><author><name>重典</name><uri>http://www.cnblogs.com/chsword/</uri></author><link rel="alternate" href="http://www.cnblogs.com/chsword/archive/2011/10/17/PowerShell_1.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/chsword/archive/2011/10/17/PowerShell_1.html"/><content type="html">&lt;p&gt;经常使用PowerShell，却从未在博客中介绍过它&lt;/p&gt;&lt;p&gt;最近正好做了个PowerShell的技术分享，所以将内容共享出来，希望对初学者有所帮助&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;PowerShell历史&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/chsword/201110/201110172041441284.png"&gt;&lt;img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/chsword/201110/201110172041448742.png" width="661" height="243" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;PowerShell印象&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;bull;PowerShell 是管理软件，拉近了Windows与Linux的距离&lt;/p&gt;&lt;p&gt;&amp;bull;PowerShell v2集成于Windows 7&amp;amp;2008 R2&lt;/p&gt;&lt;p&gt;&amp;bull;PowerShell基于.NET CLR,可以调用 WMI, COM, .NET等&lt;/p&gt;&lt;p&gt;&amp;bull;微软提供了注册表、文件系统、SQL Server、IIS的PowerShell Provider&lt;/p&gt;&lt;p&gt;&amp;bull;微软提供了基于PowerShell的免费操作系统 Windows Hyper-V Server&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;PowerShell的基本操作&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;bull;Tab自动补齐&lt;/p&gt;&lt;p&gt;&amp;bull;空格（翻页模式下跳到下一页）&lt;/p&gt;&lt;img src="http://www.cnblogs.com/chsword/aggbug/2215824.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/chsword/archive/2011/10/17/PowerShell_1.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
