<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_tubo</title><subtitle type="text"/><id>http://feed.cnblogs.com/blog/u/11404/rss</id><updated>2011-08-06T04:33:47Z</updated><author><name>tubo</name><uri>http://www.cnblogs.com/tubo/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/tubo/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/11404/rss"/><entry><id>http://www.cnblogs.com/tubo/archive/2010/11/10/1873390.html</id><title type="text">SuuchaT4Includes:一些T4模板的include文件（包含基于T4模板的asp.net mvc脚手架）</title><summary type="text">最近artech写了系列T4模板的文章，我也来凑凑热闹，发布3个T4模板的include文件，我把源代码发布到CodePlex上了，地址：http://t4includes.codeplex.com/  现在简单介绍一下这3个include，以后有时间再详细介绍 最基本的：VSHost.ttinclude  这个include就是提供一些简单地操作当前Solution（及所有Project）的方法...</summary><published>2010-11-10T03:17:00Z</published><updated>2010-11-10T03:17:00Z</updated><author><name>tubo</name><uri>http://www.cnblogs.com/tubo/</uri></author><link rel="alternate" href="http://www.cnblogs.com/tubo/archive/2010/11/10/1873390.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/tubo/archive/2010/11/10/1873390.html"/><content type="html">&lt;p&gt;最近&lt;a href="http://www.cnblogs.com/artech"&gt;artech&lt;/a&gt;写了系列T4模板的文章，我也来凑凑热闹，发布3个T4模板的include文件，我把源代码发布到CodePlex上了，地址：&lt;a href="http://t4includes.codeplex.com/"&gt;http://t4includes.codeplex.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;现在简单介绍一下这3个include，以后有时间再详细介绍 &lt;img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none"  alt="微笑" src="http://images.cnblogs.com/cnblogs_com/tubo/Windows-Live-Writer/d1be6b432710_F7D9/wlEmoticon-smile_2.png" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;最基本的：VSHost.ttinclude&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;这个include就是提供一些简单地操作当前Solution（及所有Project）的方法：&lt;/p&gt;  &lt;p&gt;静态方法：&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;public static ProjectItem FindContainer(ProjectItem item):查找给定的项目的父级，如果没有父级就返回自己。&lt;/li&gt;    &lt;li&gt;public static Project FindProject(Solution solution, string projectName)：根据项目名称在指定的解决方案中查找项目。&lt;/li&gt;    &lt;li&gt;public static Project[] AllProjects(Solution solution)：获取指定的解决方案中的所有项目。&lt;/li&gt;    &lt;li&gt;public static string GetRelativePath(ProjectItem parent, ProjectItem child)：获取给定的2个项目项的相对路径。&lt;/li&gt;    &lt;li&gt;public static ProjectItem FindItem(ProjectItems items, string itemName, bool create)：根据指定的项目项的名称和项目项列表查找项目项，这里的项目项可以是具体的文件（包括在项目中的相对路径），也可以是文件夹，如果是文件夹还可以指定是否创建文件夹&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;实例方法和属性：&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;public string GetFileFullPath(string fileWithProjectName)：根据给定的文件名称，获取文件的全路径，文件名称的格式可以是以下3种之一：&lt;a href="&amp;#109;&amp;#97;&amp;#105;&amp;#108;&amp;#116;&amp;#111;&amp;#58;&amp;#102;&amp;#105;&amp;#108;&amp;#101;&amp;#110;&amp;#97;&amp;#109;&amp;#101;&amp;#64;&amp;#112;&amp;#114;&amp;#111;&amp;#106;&amp;#101;&amp;#99;&amp;#116;&amp;#110;&amp;#97;&amp;#109;&amp;#101;"&gt;filename@projectname&lt;/a&gt;、projectname:filename、filename(模板文件所在的项目)&lt;/li&gt;    &lt;li&gt;public DTE DTE{get;set;}：DTE&lt;/li&gt;    &lt;li&gt;public Project CurrentProject{get;set;}：tt模板文件所在的项目&lt;/li&gt;    &lt;li&gt;public ProjectItem TemplateItem{get;set;}：tt模板文件&lt;/li&gt;    &lt;li&gt;public string AssemblyName{get;set;}：当前项目的程序集名称&lt;/li&gt;    &lt;li&gt;public string RootNamespace{get;set;}：当前项目的默认命名空间&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;构造函数：&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;public VSHost(GeneratedTextTransformation trans)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;目前在我们项目中这些方法和属性就能满足要求了，需要的话可以再添加 &lt;img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none"  alt="微笑" src="http://images.cnblogs.com/cnblogs_com/tubo/Windows-Live-Writer/d1be6b432710_F7D9/wlEmoticon-smile_2.png" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;EDMX文件合并器：EdmxMerger.ttinclude&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;顾名思义，这个是合并多个edmx文件的。&lt;/p&gt;  &lt;p&gt;我们项目采用的是EntityFramework，在edmx的设计器中，类太多了的话使用起来不是很方便，但是VS自己不带edmx合并功能，那就自己做一个吧 &lt;img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none"  alt="微笑" src="http://images.cnblogs.com/cnblogs_com/tubo/Windows-Live-Writer/d1be6b432710_F7D9/wlEmoticon-smile_2.png" /&gt;&lt;/p&gt;  &lt;p&gt;使用也很简单：&lt;/p&gt;  &lt;p&gt;&amp;lt;#@ template&amp;nbsp; debug="true" hostSpecific="true" #&amp;gt;   &lt;br /&gt;&amp;lt;#@ include file="..\EdmxMerger.ttinclude" #&amp;gt;&amp;lt;#@    &lt;br /&gt;output extension=".edmx"#&amp;gt;&amp;lt;#    &lt;br /&gt;//If you want to debug, please remove this comment    &lt;br /&gt;//System.Diagnostics.Debugger.Launch();    &lt;br /&gt;string[] edmxFiles = new String[]{@"Path\filename1.edmx@ProjectName1",    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @"ProjectName2:Path\filename2.edmx",    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @"filenameInCurrentProject.edmx"};    &lt;br /&gt;string storeNamespace = "YourStoreNamespace";    &lt;br /&gt;string containerName = "YourContainerName";    &lt;br /&gt;string Namespace= "YourClassNamespace";    &lt;br /&gt;Merge(edmxFiles, containerName, Namespace,storeNamespace);    &lt;br /&gt;#&amp;gt;&lt;/p&gt;  &lt;p&gt;只需要指定edmxFiles这个数组就可以了，注意先后次序。&lt;/p&gt;  &lt;p&gt;目前不支持复杂类型和存储过程以及视图（我们项目中都没有使用到）&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;T4模板的脚手架：MvcViewTransfer.ttinclude&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;关于asp.net mvc的脚手架，请参考&lt;a href="http://www.cnblogs.com/szw"&gt;TNT2(SZW)&lt;/a&gt;的：&lt;a href="http://www.cnblogs.com/szw/archive/2010/05/18/1738120.html"&gt;http://www.cnblogs.com/szw/archive/2010/05/18/1738120.html&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;这个Include也是参考&lt;a href="http://www.cnblogs.com/szw"&gt;TNT2(SZW)&lt;/a&gt;的系列文件写出来的。&lt;/p&gt;  &lt;p&gt;同样使用也很简单：&lt;/p&gt;  &lt;p&gt;&amp;lt;#@ template&amp;nbsp; debug="true" hostSpecific="true"#&amp;gt;   &lt;br /&gt;&amp;lt;#@ include file="..\MvcViewTransfer.ttinclude" #&amp;gt;&amp;lt;#@    &lt;br /&gt;output extension=".txt"#&amp;gt;    &lt;br /&gt;&amp;lt;#    &lt;br /&gt;//If you want to debug, please remove this comment    &lt;br /&gt;//System.Diagnostics.Debugger.Launch();    &lt;br /&gt;string destProjectName = "YourMVCViewProject";    &lt;br /&gt;string[] sourceFolders = new string[]{"Views", "Areas\\Admin\\Views","Areas\\Photo\\Views"};    &lt;br /&gt;//If you want to transfer to different folder names&amp;nbsp; &lt;br /&gt;//string[] destFolders = new string[]{"Views1", "Areas\\Admin\\Views1",""};    &lt;br /&gt;//Transfer(destProjectName, sourceFolders,destFolders);    &lt;br /&gt;Transfer(destProjectName, sourceFolders);    &lt;br /&gt;#&amp;gt;&lt;/p&gt;  &lt;p&gt;先简单介绍到这里。&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;关于ttinclude文件的位置，可以参考我的这篇文章：&lt;a href="http://www.cnblogs.com/tubo/archive/2010/03/15/1685989.html"&gt;VS2008 T4模板include文件的查找位置&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;要使用这些include，需要安装Visual Studio 2010 SDK，在vs2008下没有测试过：&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.microsoft.com/downloads/en/confirmation.aspx?familyid=47305CF4-2BEA-43C0-91CD-1B853602DCC5&amp;amp;displaylang=en" href="http://www.microsoft.com/downloads/en/confirmation.aspx?familyid=47305CF4-2BEA-43C0-91CD-1B853602DCC5&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/en/confirmation.aspx?familyid=47305CF4-2BEA-43C0-91CD-1B853602DCC5&amp;amp;displaylang=en&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;参考了以下文章：&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://efreedom.com/Question/1-3647106/T4-Templates-VS-2010-Find-Metada-File-SubSonicCoredll"&gt;http://efreedom.com/Question/1-3647106/T4-Templates-VS-2010-Find-Metada-File-SubSonicCoredll&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.visualstudiodev.com/visual-studio-extensibility/how-to-iterate-projects-customized-project-type-within-solution-folder-11971.shtml"&gt;http://www.visualstudiodev.com/visual-studio-extensibility/how-to-iterate-projects-customized-project-type-within-solution-folder-11971.shtml&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://www.cnblogs.com/tubo/aggbug/1873390.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/tubo/archive/2010/11/10/1873390.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/tubo/archive/2010/11/06/1870526.html</id><title type="text">你要练神功，就应该先自宫，对不？</title><summary type="text">我承认了，我标题党了。  原来想题目准备是：&amp;#8220;读周鸿祎公开信《腾讯欲置360于死地 必须得反抗》&amp;#8221;，原谅我吧。  当你们读完，发现我原来准备的题目都是标题党，再次原谅我吧。  &amp;#160;  原文呢，原文在哪里？我这个人比较极端，从不安装周鸿祎出品的任何东西，也不浏览他的网站，所以，这个原文就用博客圆的吧，这篇文章的内容有些也是这个新闻评论里面的：  http://news...</summary><published>2010-11-06T04:59:00Z</published><updated>2010-11-06T04:59:00Z</updated><author><name>tubo</name><uri>http://www.cnblogs.com/tubo/</uri></author><link rel="alternate" href="http://www.cnblogs.com/tubo/archive/2010/11/06/1870526.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/tubo/archive/2010/11/06/1870526.html"/><content type="html">&lt;p&gt;我承认了，我标题党了。&lt;/p&gt;  &lt;p&gt;原来想题目准备是：&amp;#8220;读周鸿祎公开信《腾讯欲置360于死地 必须得反抗》&amp;#8221;，原谅我吧。&lt;/p&gt;  &lt;p&gt;当你们读完，发现我原来准备的题目都是标题党，再次原谅我吧。&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;原文呢，原文在哪里？我这个人比较极端，从不安装周鸿祎出品的任何东西，也不浏览他的网站，所以，这个原文就用博客圆的吧，这篇文章的内容有些也是这个新闻评论里面的：&lt;/p&gt;  &lt;p&gt;&lt;a href="http://news.cnblogs.com/n/79976/"&gt;http://news.cnblogs.com/n/79976/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#8220;刚才在网上看到《经济观察报》对马化腾的采访，我很震惊，他对我、360和扣扣保镖说了很多不负责任的话，甚至断章取义地把我和他之间的短信发了出来。我觉得，目的很简单，要把我打入万劫不复的深渊，让我永世不得翻身。&amp;#8221;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;哈哈，老周，说实话，老马在采访中说的话是有很多不负责任，但是这就是你的风格知道不，对付你，就只有用你的招数。老马只是学了一点慕容家的功夫而已。&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;声明：本文以下内容再与腾讯无关，我不支持QQ，偶尔也反抗一下QQ，但是我坚决反对周鸿祎，所以不要说我是QQ的枪、QQ的水军、QQ的五毛党&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#8220;在互联网行业里，3721一直是我想竭力摆脱的梦魇，包括我做360都是为了要摘掉这个强加给我的大帽子。3721，曾经开创了很多的创新，包括地址栏搜索、插件推广、代理渠道。&amp;#8221;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;强加吗？本来3721我不想再说什么，大家都知道是怎么回事，但是当我看到&lt;em&gt;强加、代理渠道&lt;/em&gt;，我还是啰嗦一下：帽子谁强加给你的？请把主体说出来，让我们看看这个主体是何方神圣，居然能给经常给别人扣大帽子的人扣上大帽子（不会是扣扣保镖吧？咦，怎么扣扣保镖也没有保住你被扣大帽子呢？哦，不对，不是扣扣保镖，如果是那时光不是乱套了）；代理渠道确实你创新了：&amp;#8220;您好，我是3721的代理，您公司的实名已经有人申请注册了，为了保护您公司的利益，我们特意为您保留下来了，如果您XX时间之内不够买的话，我们就把这个实名给申请人了&amp;#8221;，这种创新在360里面被留下了。&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#8220;但我最终冷静了下来，这个潘多拉的盒子终究是我打开的，我只能自己亲手合上它。&amp;#8221;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;可是，老周，你为什么不在这个盒子在你手里的时候合上它，而要在你把这个盒子卖给别人了，然后暴力合上它呢？ &lt;/p&gt;  &lt;p&gt;你要练神功，就应该先自宫，对不？这样别人才信服你，您没有先自宫，我就是在这个时候开始坚定地反对您了，因为我看到了你的恶。&lt;/p&gt; （嗯，标题就出自这里）   &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#8220;我是个嫉恶如仇的人，&amp;#8221;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;我也是个嫉恶如仇的人。&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#8220;一定不要像百度那样做搜索，不要把竞价排名混合在自然搜索结果里。而且，为了赚钱就把一些欺诈网站推荐给用户，让用户上当，在我看来这就是恶。&amp;#8221;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;我非常同意您说的百度的恶，&amp;#8220;一个恶人说另一个恶人恶，那他就不是恶了&amp;#8221;，这是不对的。&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&amp;#8220;有了3721的前车之鉴，我根本就不敢得罪用户，更何况什么超级病毒，什么后门程序了。&amp;#8221;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;是的，你不敢得罪用户了，因为你开始恐吓用户、愚弄用户了。    &lt;br /&gt;（我没有用过360的产品，以上纯属道听途说，如果说得不对，我道歉，我召回，嗯，召回这个词要在软件业流行了） &lt;/p&gt;  &lt;p&gt;但是，关于360认证我知道的，我们是做小软件的，客户说我们的程序被360说可能有危害，怎么办呢，咨询后，说到360做认证，好吧，原封不动地把我们软件给360认证，360认证的采用的牛B的技术检测我们的软件没有问题，通过认证了，客户说也不报警了。    &lt;br /&gt;那么老周，既然你一直标榜你重视用户的感受，尊重用户的利益，为什么不直接把360认证那么牛B的技术用到你的360产品中呢，免得用户受了惊吓，发现是虚惊一场，你这叫重视用户的感受？ &lt;/p&gt;  &lt;p&gt;嗯，你是不敢得罪用户，我们不敢得罪您了，您在3721中代理渠道上的创新在这儿来发扬光大了。&lt;/p&gt;  &lt;p&gt;（另，我不知道其他的安全软件是否也用这样的认证，如果有，也不是什么好鸟）&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;注：这里的恐吓是指提示信息危言耸听，而非人身恐吓，请360的支持者不要断章取义，谢谢&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;后面的内容都是和QQ有关的了，不评论了。看官，原谅我2个标题都是标题党。&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;摘2条评论：&lt;/p&gt;  &lt;p&gt;第&lt;a href="http://news.cnblogs.com/n/79976/#66"&gt;66&lt;/a&gt;楼&lt;a name="66"&gt;&lt;/a&gt;&amp;#160; 发表于 2010-11-06 10:41&lt;/p&gt;  &lt;p&gt;@tubo    &lt;br /&gt;您要是指恐吓的话，我不清楚您是否有孩子，如果有的话，那您就没有恐吓过他吗？     &lt;br /&gt;关键是出发点，是善意恐吓还是恶意恐吓！&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;第&lt;a href="http://news.cnblogs.com/n/79976/#77"&gt;77&lt;/a&gt;楼&lt;a name="77"&gt;&lt;/a&gt; &lt;a href="http://home.cnblogs.com/tubo/"&gt;tubo&lt;/a&gt; 发表于 2010-11-06 11:10&lt;/p&gt;  &lt;p&gt;我有小孩，如果您拿同一句话去恐吓1-2岁、4岁、10岁的小孩，会有什么不同的结果吗？    &lt;br /&gt;我算是一个比较熟悉电脑的，如果我安装有360我会忽视那些提示（因为我知道那些360说的危害其实是不存在的），并且我会选择以后都忽略（如果周鸿祎重视用户的体验、感受，应该有类似的选择吧），但是，同样的提示，对只是会用电脑的人来说会怎么样呢？     &lt;br /&gt;（再次申明，我没有用过360的产品，关于360恐吓用户纯属道听途说，如果说得不对，我召回，嗯，召回这个词要在软件业流行了）&lt;/p&gt; &lt;img src="http://www.cnblogs.com/tubo/aggbug/1870526.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/tubo/archive/2010/11/06/1870526.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/tubo/archive/2010/03/15/1685989.html</id><title type="text">VS2008 T4模板include文件的查找位置</title><summary type="text">最近在研究T4模板，其提供了一个include file的功能，可以将一些供代码生成公用的方法和类放到include文件中，提高代码生成代码的重用。如果把include file放到项目中.tt文件同一个文件夹中，vs2008可以找到它，但是这样的话，修改include文件将要维护多个版本。如果把include文件不放到项目中并且让vs2008能自动找到它，就可以不用维护include文件的多个副...</summary><published>2010-03-15T02:54:00Z</published><updated>2010-03-15T02:54:00Z</updated><author><name>tubo</name><uri>http://www.cnblogs.com/tubo/</uri></author><link rel="alternate" href="http://www.cnblogs.com/tubo/archive/2010/03/15/1685989.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/tubo/archive/2010/03/15/1685989.html"/><content type="html">&lt;p&gt;最近在研究T4模板，其提供了一个include file的功能，可以将一些供代码生成公用的方法和类放到include文件中，提高代码生成代码的重用。如果把include file放到项目中.tt文件同一个文件夹中，vs2008可以找到它，但是这样的话，修改include文件将要维护多个版本。如果把include文件不放到项目中并且让vs2008能自动找到它，就可以不用维护include文件的多个副本了。VS2008在什么地方查找include文件呢，找了很久，终于在注册表中找到了：&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://images.cnblogs.com/cnblogs_com/tubo/WindowsLiveWriter/VS2008T4include_991C/image_3.png" width="1004" height="210" /&gt;&lt;/p&gt;  &lt;p&gt;在我的计算机上默认的include位置是：C:\Program Files\Microsoft Visual Studio 2008 SDK\VisualStudioIntegration\Tools\DSLTools\TextTemplates。&lt;/p&gt;  &lt;p&gt;当然你也可以自己添加一个项，设定自己的include文件位置，就像上图中的T4Toolbox一样。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/tubo/aggbug/1685989.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/tubo/archive/2010/03/15/1685989.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/tubo/archive/2010/01/08/1642045.html</id><title type="text">EF4.0 POCO之继承</title><summary type="text">最近一直在看关于EF4.0的POCO的一些文章，自己也想做一些POCO的测试，正好看到风车车的Entity Framework 4 第一篇 POCO和双鱼座的POCO真那么重要么？，对于风车车EF4系列的第一篇POCO中就使用Code Only来讲解有点不太适应，呵呵，一下子就进入了没有edmx的时代了，过度太快了:)。看了双鱼座大侠的文章，感觉是真正的面向对象的设计，并且从正文中进入了这篇文章：...</summary><published>2010-01-08T03:50:00Z</published><updated>2010-01-08T03:50:00Z</updated><author><name>tubo</name><uri>http://www.cnblogs.com/tubo/</uri></author><link rel="alternate" href="http://www.cnblogs.com/tubo/archive/2010/01/08/1642045.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/tubo/archive/2010/01/08/1642045.html"/></entry><entry><id>http://www.cnblogs.com/tubo/archive/2009/09/24/1572991.html</id><title type="text">ExtJs实践：支持&amp;ldquo;复杂&amp;rdquo;Json的JsonReader</title><summary type="text">从服务端返回如下的JSON：  {Id:2,Name:'Child1',Parent:{Id:1,Name:'Parent'}}定义了如下的JsonReader来准备显示角色列表，父角色的名称影射成ParentName：var myReader = new Ext.data.JsonReader({ idProperty: 'id' root: 'rows', totalProperty: 're...</summary><published>2009-09-23T16:45:00Z</published><updated>2009-09-23T16:45:00Z</updated><author><name>tubo</name><uri>http://www.cnblogs.com/tubo/</uri></author><link rel="alternate" href="http://www.cnblogs.com/tubo/archive/2009/09/24/1572991.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/tubo/archive/2009/09/24/1572991.html"/></entry><entry><id>http://www.cnblogs.com/tubo/archive/2009/09/23/1572971.html</id><title type="text">HP CQ40-406TX安装Win7记</title><summary type="text">最近笔记本的vista系统越来越慢了，准备重新安装系统，既然Win7都出来了，那就让vista退休吧。 系统安装过程很顺利，完成之后发现系统里几个设备驱动没有找到，其中就包括显卡（Geforce G 103M，这个在我的意料之中，因为之前Vista也不认识这个显卡）： 于是，去nvida的官网下载最新的驱动程序： 用下载下来的安装程序，却只能安装声卡，没有发现与该驱动兼容的显卡（唉，怎么又在我的意...</summary><published>2009-09-23T15:33:00Z</published><updated>2009-09-23T15:33:00Z</updated><author><name>tubo</name><uri>http://www.cnblogs.com/tubo/</uri></author><link rel="alternate" href="http://www.cnblogs.com/tubo/archive/2009/09/23/1572971.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/tubo/archive/2009/09/23/1572971.html"/></entry><entry><id>http://www.cnblogs.com/tubo/archive/2009/09/16/1568150.html</id><title type="text">更改Sql Server数据库的所有者</title><summary type="text">今天学到一招，更改sql server数据库中表的所有者： exec sp_msforeachtable 'sp_changeobjectowner ''?'', ''newOwner'''</summary><published>2009-09-16T15:03:00Z</published><updated>2009-09-16T15:03:00Z</updated><author><name>tubo</name><uri>http://www.cnblogs.com/tubo/</uri></author><link rel="alternate" href="http://www.cnblogs.com/tubo/archive/2009/09/16/1568150.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/tubo/archive/2009/09/16/1568150.html"/></entry><entry><id>http://www.cnblogs.com/tubo/archive/2009/09/14/1566654.html</id><title type="text">Failed to retrieve paths under VSTemplate for the specified registry hive</title><summary type="text">最近更换开发机的环境,从Windows XP换到Windows 7，结果以前在XP下的一个VS2008的一个插件项目在新环境中编译老是出错： Failed to retrieve paths under VSTemplate for the specified registry hive 在网上搜索了一番，终于找到一篇文章介绍的解决方案： 运行Vs2008 SDK-〉Tools-〉Reset th...</summary><published>2009-09-14T15:26:00Z</published><updated>2009-09-14T15:26:00Z</updated><author><name>tubo</name><uri>http://www.cnblogs.com/tubo/</uri></author><link rel="alternate" href="http://www.cnblogs.com/tubo/archive/2009/09/14/1566654.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/tubo/archive/2009/09/14/1566654.html"/></entry><entry><id>http://www.cnblogs.com/tubo/archive/2009/09/09/1562933.html</id><title type="text">PostSharp应用：延迟加载（二）</title><summary type="text">　　在上一篇文章中简单介绍了没有使用AOP情况下如何来实现延迟加载的，并给出了一个使用了AOP实现延迟加载后的代码效果。这篇文章就来介绍如何用PostSharp来达到这种效果。</summary><published>2009-09-08T17:23:00Z</published><updated>2009-09-08T17:23:00Z</updated><author><name>tubo</name><uri>http://www.cnblogs.com/tubo/</uri></author><link rel="alternate" href="http://www.cnblogs.com/tubo/archive/2009/09/09/1562933.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/tubo/archive/2009/09/09/1562933.html"/></entry><entry><id>http://www.cnblogs.com/tubo/archive/2009/09/08/1562205.html</id><title type="text">PostSharp应用：延迟加载（一）</title><summary type="text">延迟加载简单地说，就是当你从数据库中加载一个对象的时候，该对象的属性并不是所有的都一次加载到内存中，有些属性需要用到的时候才从数据库中加载，这样可以减少同数据库的通讯量、降低数据库的查询压力（有些属性的获取是需要多表进行join才能获取的）等等。</summary><published>2009-09-07T16:33:00Z</published><updated>2009-09-07T16:33:00Z</updated><author><name>tubo</name><uri>http://www.cnblogs.com/tubo/</uri></author><link rel="alternate" href="http://www.cnblogs.com/tubo/archive/2009/09/08/1562205.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/tubo/archive/2009/09/08/1562205.html"/></entry></feed>
