<?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/40682/rss</id><updated>2011-12-05T00:06:41Z</updated><author><name>朱良雄</name><uri>http://www.cnblogs.com/zhuliangxiong/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/zhuliangxiong/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/40682/rss"/><entry><id>http://www.cnblogs.com/zhuliangxiong/archive/2011/12/05/2276329.html</id><title type="text">Zune software is not installed when debug WP7</title><summary type="text">在Visual studio 2010中通过向导自动生成的WP7程序。F5开始运行，报告如下错误: &amp;quot;Zune software is not installed. Install the latest version of Zune software.&amp;quot; Google之后发现原来是Visual Studio试图连接手机设备来调试程序。只需要将Visual Studio中的configuratio...</summary><published>2011-12-05T00:07:00Z</published><updated>2011-12-05T00:07:00Z</updated><author><name>朱良雄</name><uri>http://www.cnblogs.com/zhuliangxiong/</uri></author><link rel="alternate" href="http://www.cnblogs.com/zhuliangxiong/archive/2011/12/05/2276329.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/zhuliangxiong/archive/2011/12/05/2276329.html"/><content type="html">&lt;p&gt;在Visual studio 2010中通过向导自动生成的WP7程序。F5开始运行，报告如下错误: &amp;quot;Zune software is not installed. Install the latest version of Zune software.&amp;quot; Google之后发现原来是Visual Studio试图连接手机设备来调试程序。只需要将Visual Studio中的configuration设置为Windows Phone 7 Emulator就搞定了。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/zhuliangxiong/aggbug/2276329.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/zhuliangxiong/archive/2011/12/05/2276329.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/zhuliangxiong/archive/2011/11/30/2268494.html</id><title type="text">Asp.NET FAQ</title><summary type="text">1.ScriptManager.RegisterScriptResource,的Type参数必须要是该Resource所在的Assembly中的类型。否则就会Web Resource Not Found.</summary><published>2011-11-29T17:13:00Z</published><updated>2011-11-29T17:13:00Z</updated><author><name>朱良雄</name><uri>http://www.cnblogs.com/zhuliangxiong/</uri></author><link rel="alternate" href="http://www.cnblogs.com/zhuliangxiong/archive/2011/11/30/2268494.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/zhuliangxiong/archive/2011/11/30/2268494.html"/><content type="html">&#xD;
 &#xD;
1.ScriptManager.RegisterScriptResource,的Type参数必须要是该Resource所在的Assembly中的类型。否则就会Web Resource Not Found.&lt;img src="http://www.cnblogs.com/zhuliangxiong/aggbug/2268494.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/zhuliangxiong/archive/2011/11/30/2268494.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/zhuliangxiong/archive/2011/07/03/2096640.html</id><title type="text">CLR.NET 如何将程序集放置在自定义的文件夹中</title><summary type="text">有很多Windows程序都会将exe文件和所引用的dll分开放置在不同的文件夹中。比如：很多人将所有的dll都放置在一个叫bin的文件夹中。虽然Asp.NET应用程序默认就是将编译好的程序集放置在bin文件夹中的，但是普通的Windows程序却不会自动到bin文件夹中去查找所需要的程序集。 其实CLR是提供了方法来处理这个问题的。实际上你可以将程序集放置在任何子文件夹中。只需要在配置文件中对ass...</summary><published>2011-07-03T02:19:00Z</published><updated>2011-07-03T02:19:00Z</updated><author><name>朱良雄</name><uri>http://www.cnblogs.com/zhuliangxiong/</uri></author><link rel="alternate" href="http://www.cnblogs.com/zhuliangxiong/archive/2011/07/03/2096640.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/zhuliangxiong/archive/2011/07/03/2096640.html"/><content type="html">&lt;p&gt;有很多Windows程序都会将exe文件和所引用的dll分开放置在不同的文件夹中。比如：很多人将所有的dll都放置在一个叫bin的文件夹中。虽然Asp.NET应用程序默认就是将编译好的程序集放置在bin文件夹中的，但是普通的Windows程序却不会自动到bin文件夹中去查找所需要的程序集。&lt;/p&gt;  &lt;p&gt;其实CLR是提供了方法来处理这个问题的。实际上你可以将程序集放置在任何子文件夹中。只需要在配置文件中对assemblyBinding做一点配置就可以了。下面是一个例子:&lt;/p&gt;  &lt;p&gt;如果程序集分别放在多个不同的子目录下，只需要将这些子目录的路径以分号(;)分割.&lt;/p&gt; &lt;p&gt;但是所有的目录都必须是相对路劲，而不能是绝对路径。这个相对路径的根目录就是程序所在的目录。做出这个限制的依据是:应用程序可以安全地操纵自己所在的目录以及其子目录，但是不能随意操作其它目录。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/zhuliangxiong/aggbug/2096640.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/zhuliangxiong/archive/2011/07/03/2096640.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/zhuliangxiong/archive/2011/07/02/2096153.html</id><title type="text">C# 中如何控制是否输出BOM</title><summary type="text">首先解释一下什么是BOM. BOM的全名是Byte Order Mark。 从它的名字上不难看出，它存在的目的就是为了标记Byte Order. 关于Byte Order的定义可以在这里找到http://en.wikipedia.org/wiki/Endianness 它存在的组要原因是在用于确定二进制数据在内存中的实际存放次序。在两台机器之间交换数据的时候这个Byte Order(或者叫Endi...</summary><published>2011-07-02T02:57:00Z</published><updated>2011-07-02T02:57:00Z</updated><author><name>朱良雄</name><uri>http://www.cnblogs.com/zhuliangxiong/</uri></author><link rel="alternate" href="http://www.cnblogs.com/zhuliangxiong/archive/2011/07/02/2096153.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/zhuliangxiong/archive/2011/07/02/2096153.html"/><content type="html">&lt;p&gt;首先解释一下什么是BOM. &lt;/p&gt;  &lt;p&gt;BOM的全名是Byte Order Mark。 从它的名字上不难看出，它存在的目的就是为了标记Byte Order. 关于Byte Order的定义可以在这里找到&lt;a title="http://en.wikipedia.org/wiki/Endianness" href="http://en.wikipedia.org/wiki/Endianness"&gt;http://en.wikipedia.org/wiki/Endianness&lt;/a&gt; 它存在的组要原因是在用于确定二进制数据在内存中的实际存放次序。在两台机器之间交换数据的时候这个Byte Order(或者叫Endian)一定要协调一致，否则解释数据就会出现错误。比如Intel的CPU就是Little Endian的。而网络上传输的二进制数据都是Big Endian.所以用C#接受来自网络的数据的时候一定要注意处理字节序。事实上很多程序都没有处理字节序，因为我们通常的程序都是跑在Wintel架构上。通讯的双方都是LittleEndian的，这样数据在发送到网络的时候，发生了一次Byte Order错误，另一端接受后，再发生一次Byte Order错误，结果负负得正。所以这个问题通常显示不出来。&lt;/p&gt;  &lt;p&gt;回到BOM,在维基百科上有十分详细的解释.&lt;a title="http://en.wikipedia.org/wiki/Byte_order_mark" href="http://en.wikipedia.org/wiki/Byte_order_mark"&gt;http://en.wikipedia.org/wiki/Byte_order_mark&lt;/a&gt;. 总结起来就是UTF8,UTF16和UTF32都会在数据流前面插入BOM来标记后续内容的Byte Order. 这本来是一番好意，但是出现了两个问题：首先，由于BOM的存在，文本文件不再是一个ASCII兼容的文本文件了。市面上有很多处理文本文件的工具，在遇到BOM的时候，统统都挂了。其次，很多Xml解析器居然也不支持BOM。也就是说带有BOM的Xml被他们认为是非法的，而解析失败。&lt;/p&gt;   &lt;p&gt;如何控制BOM的输出&lt;/p&gt;  &lt;p&gt;BOM是编码带来的，很自然的，微软在其UTF8,UTF16和UTF32类的构造函数都提供了重载来指定是否在数据流中添加这个BOM。下面以XML为例：&lt;/p&gt;  &lt;p&gt;上面的代码调用CreateXmlDoc创建了一个的XmlDocument对象,并添加了一些内容，然后将XmlDocument写到Stream中去.从第17-19行的代码可以看到，输出的内容的前三个字节为0xEF,0xBB和0xBF.这三个字节正是UTF8编码的BOM&lt;/p&gt; &lt;p&gt;为了解决这个问题，我写了下面的代码:&lt;/p&gt;  &lt;p&gt;上面的代码通过给XmlDocument定义扩展方法的手段，为Save添加了一个新的重载，这个重载添加了一个新的参数withBOM,用于表达是否需要输出BOM.这段代码中最关键的是第4行：withBOM这个参数被传递给了UTF8Encoding的构造函数。&lt;/p&gt; 在下面的测试中，我们检查了输出的数据流的起始数据。这一次起始数据为&amp;lt;?,而不是0xEF,0xBB和0xBF了. &lt;img src="http://www.cnblogs.com/zhuliangxiong/aggbug/2096153.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/zhuliangxiong/archive/2011/07/02/2096153.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/zhuliangxiong/archive/2011/01/27/1945858.html</id><title type="text">Asp.NET Route</title><summary type="text">本文主要说明了Asp.NET Route组件的基本工作原理.Route组件本来是MVC的一部分.但是后来独立了.在写Asp.NET MVC的程序时,心中一直有一个疑问,既然Route组件是Asp.NET的基础组件了,那么当一个请求到达的时候,Route组件如何将该请求转发给MVC呢? 昨天下载了Asp.NET MVC2的源代码,才发现我一直都被MapRoute这个方法给骗了.这个方法不是Route组件内置的方法,而是MVC模块提供的扩展方法.在这个扩展方法里面,它明确指定了RouteHandler为MvcRouteHander. 为什么MVC的扩展方法名字不叫做MapMvcRoute?</summary><published>2011-01-26T16:39:00Z</published><updated>2011-01-26T16:39:00Z</updated><author><name>朱良雄</name><uri>http://www.cnblogs.com/zhuliangxiong/</uri></author><link rel="alternate" href="http://www.cnblogs.com/zhuliangxiong/archive/2011/01/27/1945858.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/zhuliangxiong/archive/2011/01/27/1945858.html"/><content type="html">&lt;p&gt;本文主要说明了Asp.NET Route组件的基本工作原理.Route组件本来是MVC的一部分.但是后来独立了.在写Asp.NET MVC的程序时,心中一直有一个疑问,既然Route组件是Asp.NET的基础组件了,那么当一个请求到达的时候,Route组件如何将该请求转发给MVC呢? 昨天下载了Asp.NET MVC2的源代码,才发现我一直都被MapRoute这个方法给骗了.这个方法不是Route组件内置的方法,而是MVC模块提供的扩展方法.在这个扩展方法里面,它明确指定了RouteHandler为MvcRouteHander. 为什么MVC的扩展方法名字不叫做MapMvcRoute? 回到Route组件本身,其实Route组件本身是一个非常简单的模块.它主要提供下面的两个功能:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;找到合适的Route来解析当前请求的Url. &lt;/li&gt;    &lt;li&gt;找到合适的Route来生成Url. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;1.Route模块的基本构成.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Route模块的基本构成如下图所示:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhuliangxiong/201101/201101270326448398.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/zhuliangxiong/201101/201101270326502547.png" width="831" height="491" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;上面的图中,RouteTable,RouteCollection,RouteBase,RouteData和IRouteHandler是Route模块的核心组件,缺一不可. Route是RouteBase的一个参考实现.微软做事的风格一项都是在提供抽象架构的同时,提供一个足够好的参考实现.如果需要大规模扩展其抽象架构,就必须将这二者区分开来.IHttpHandler是Asp.Net平台的基本接口. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;2.找到合适的Route来解析当前Url&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/zhuliangxiong/201101/201101270326517139.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/zhuliangxiong/201101/201101270326528700.png" width="852" height="523" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;待续...&lt;/p&gt;&lt;img src="http://www.cnblogs.com/zhuliangxiong/aggbug/1945858.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/zhuliangxiong/archive/2011/01/27/1945858.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
