<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_Component Port</title><subtitle type="text">The letter killeth, but the spirit giveth life.</subtitle><id>http://feed.cnblogs.com/blog/u/31730/rss</id><updated>2011-09-22T01:02:29Z</updated><author><name>winkingzhang</name><uri>http://www.cnblogs.com/winkingzhang/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/winkingzhang/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/31730/rss"/><entry><id>http://www.cnblogs.com/winkingzhang/archive/2010/06/13/1752880.html</id><title type="text">VS2010 Extension实践（3）——实现自定义配置</title><summary type="text">在之前的两篇曾提到通过VSSDK（MSDN也叫VSX）来拓宽思路，实现一些MEF Extension所不能做到的功能，比如获取IVsUIShell服务来执行Command等等，这里我给各位看官展示如何通过VSX提供自定义配置到IDE里面。首先创建一个Package工程，找到里面的XX_Package.cs，要提供自定义配置到IDE，需要在这里通过ProviderProfile和ProviderOp...</summary><published>2010-06-13T04:33:00Z</published><updated>2010-06-13T04:33:00Z</updated><author><name>winkingzhang</name><uri>http://www.cnblogs.com/winkingzhang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/winkingzhang/archive/2010/06/13/1752880.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/winkingzhang/archive/2010/06/13/1752880.html"/><content type="html">&lt;p&gt;在之前的两篇曾提到通过VSSDK（MSDN也叫VSX）来拓宽思路，实现一些MEF Extension所不能做到的功能，比如获取&lt;b&gt;IVsUIShell&lt;/b&gt;服务来执行Command等等，这里我给各位看官展示如何通过VSX提供自定义配置到IDE里面。&lt;/p&gt;&lt;p&gt;首先创建一个Package工程，找到里面的XX_Package.cs，要提供自定义配置到IDE，需要在这里通过ProviderProfile和ProviderOptionPage告诉Package两个重要信息：此Package有配置信息（Profiler）以及对应该配置信息的界面，这里我从我的GotoDef extension工程里截了一张图：&lt;/p&gt;&lt;p&gt;&lt;a target="_blank" href="http://images.cnblogs.com/cnblogs_com/winkingzhang/117454/o_Tool_Option_GotoDef_Proj.png"&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/winkingzhang/117454/o_Tool_Option_GotoDef_Proj.png" alt="ProvideProfiler/ProvideOptionPage attributes usage, click to enlarge" height="356" width="900" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;其中ProvideProfile告诉Package提供的Profiler的相关信息：关联的提供该Profiler的类型、分类名称、页面名称、资源ID等等，VS在需要时会把保存的信息（默认在注册表里）读取并反序列化成关联的类型的对象，在关闭Option对话框或者确认应用配置时，会把配置信息对象序列化保存（默认在注册表）。&lt;/p&gt;&lt;p&gt;另一个ProvideOptionPage来指定配置信息对象和界面，它是从DialogPage派生，需要注意的是需要为它提供Guid和ClassInterface类型；默认情况下，显示该配置对象使用PropertyGrid，当然，可以通过override Window属性来自定义自己的UI，比如GoToDef中的配置UI，如下图：&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/winkingzhang/WindowsLiveWriter/VS2010Extension3_9A81/GoToDefOptPage_2.png"&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/winkingzhang/WindowsLiveWriter/VS2010Extension3_9A81/GoToDefOptPage_thumb.png" alt="GoToDefOptPage" title="GoToDefOptPage" style="display: inline; border-width: 0px;" border="0" height="484" width="587" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;完成以后在VS Extension工程中引用这个Package并添加到VSIX输出中，这样就可以使用配置了：&lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/winkingzhang/WindowsLiveWriter/VS2010Extension3_9A81/Use_GoToDef_Opt_2.png"&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/winkingzhang/WindowsLiveWriter/VS2010Extension3_9A81/Use_GoToDef_Opt_thumb.png" alt="Use_GoToDef_Opt" title="Use_GoToDef_Opt" style="display: inline; border-width: 0px;" border="0" height="484" width="625" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/winkingzhang/WindowsLiveWriter/VS2010Extension3_9A81/Use_GoToDef_Opt2_2.png"&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/winkingzhang/WindowsLiveWriter/VS2010Extension3_9A81/Use_GoToDef_Opt2_thumb.png" alt="Use_GoToDef_Opt2" title="Use_GoToDef_Opt2" style="display: inline; border-width: 0px;" border="0" height="146" width="644" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;至此，为VS Extension提供自定义配置的工作就完成了，具体效果可以参考我的上一篇帖子：&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/winkingzhang/archive/2010/02/26/1673995.html"&gt;http://www.cnblogs.com/winkingzhang/archive/2010/02/26/1673995.html&lt;/a&gt; &lt;br /&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/winkingzhang/117454/o_options.png" alt="Visual Studio .NET 2010 Options" height="372" width="640" /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/winkingzhang/aggbug/1752880.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/winkingzhang/archive/2010/06/13/1752880.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/winkingzhang/archive/2010/02/26/1673995.html</id><title type="text">[VS2010 Extension]PowerExtension.GoToDefinition</title><summary type="text">自己实现了一个Visual Studio.NET 2010扩展，使用MS-PL协议发布。功能：模仿Word上对链接的处理，当按住设置的Modifier键，鼠标点击代码中的标识词就可以快速切换到该标识词的定义代码，即Visual Studio中的GoToDefinition功能(F12)。下载链接：http://files.cnblogs.com/winkingzhang/PowerExtensio...</summary><published>2010-02-26T02:33:00Z</published><updated>2010-02-26T02:33:00Z</updated><author><name>winkingzhang</name><uri>http://www.cnblogs.com/winkingzhang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/winkingzhang/archive/2010/02/26/1673995.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/winkingzhang/archive/2010/02/26/1673995.html"/><content type="text">自己实现了一个Visual Studio.NET 2010扩展，使用MS-PL协议发布。功能：模仿Word上对链接的处理，当按住设置的Modifier键，鼠标点击代码中的标识词就可以快速切换到该标识词的定义代码，即Visual Studio中的GoToDefinition功能(F12)。下载链接：http://files.cnblogs.com/winkingzhang/PowerExtensio...</content></entry><entry><id>http://www.cnblogs.com/winkingzhang/archive/2010/02/04/1663865.html</id><title type="text">VS2010 Extension实践（2）</title><summary type="text">在上一篇（VS2010 Extension实践）里，主要展示了如何使用MEF扩展VS2010，来扩展编辑控制和展现自己的UI；在实现QuickToolbar的时候，发现MEF仅仅提供了很基本的编辑控制，如果需要高级的操作，比如注释选择的代码，就捉襟见肘，很是麻烦。本篇我将展示如何深入挖掘VS2010 Extension，使它成为锋利的军刀，而不是绣花枕头。鉴于此，这里就从上面提到了的Feature...</summary><published>2010-02-04T14:01:00Z</published><updated>2010-02-04T14:01:00Z</updated><author><name>winkingzhang</name><uri>http://www.cnblogs.com/winkingzhang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/winkingzhang/archive/2010/02/04/1663865.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/winkingzhang/archive/2010/02/04/1663865.html"/><content type="text">在上一篇（VS2010 Extension实践）里，主要展示了如何使用MEF扩展VS2010，来扩展编辑控制和展现自己的UI；在实现QuickToolbar的时候，发现MEF仅仅提供了很基本的编辑控制，如果需要高级的操作，比如注释选择的代码，就捉襟见肘，很是麻烦。本篇我将展示如何深入挖掘VS2010 Extension，使它成为锋利的军刀，而不是绣花枕头。鉴于此，这里就从上面提到了的Feature...</content></entry><entry><id>http://www.cnblogs.com/winkingzhang/archive/2010/01/26/1657059.html</id><title type="text">VS2010 Extension实践</title><summary type="text">最近VS2010 Extension在Visual Studio Blog（http://blogs.msdn.com/visualstudio/）上提得很频繁，于是也想翻来文档研究研究，结果居然找了半天，居然没有一丁点完整介绍这一块的，于是，只好自己找着VS IDE上的模板提供的内容和Visual Studio Blog上的讲解，一边Reflector参演，一边涂鸦一些代码，准备实弹演练一下，但...</summary><published>2010-01-26T14:08:00Z</published><updated>2010-01-26T14:08:00Z</updated><author><name>winkingzhang</name><uri>http://www.cnblogs.com/winkingzhang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/winkingzhang/archive/2010/01/26/1657059.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/winkingzhang/archive/2010/01/26/1657059.html"/><content type="text">最近VS2010 Extension在Visual Studio Blog（http://blogs.msdn.com/visualstudio/）上提得很频繁，于是也想翻来文档研究研究，结果居然找了半天，居然没有一丁点完整介绍这一块的，于是，只好自己找着VS IDE上的模板提供的内容和Visual Studio Blog上的讲解，一边Reflector参演，一边涂鸦一些代码，准备实弹演练一下，但...</content></entry><entry><id>http://www.cnblogs.com/winkingzhang/archive/2010/01/12/1645065.html</id><title type="text">如何通过反射调用带有ref或者out的参数的方法[迁移]</title><summary type="text">原帖放在GCDN上，由于GCDN做了整合调整，现在关注产品交流等原因GCDN Blog关闭了，只好把一些有用点的搬过来了。2009年8月13日 12:29 by winking写这篇博客，原起今天CyljXu问我一个问题：如何通过反射调用带有ref或者out的参数的方法？想着可能其他人也会遇到这个问题，权且记录下来，以备后行者搜索到。 这个在MSDN上有解释，参考MethodBase.Invoke...</summary><published>2010-01-12T06:00:00Z</published><updated>2010-01-12T06:00:00Z</updated><author><name>winkingzhang</name><uri>http://www.cnblogs.com/winkingzhang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/winkingzhang/archive/2010/01/12/1645065.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/winkingzhang/archive/2010/01/12/1645065.html"/><content type="text">原帖放在GCDN上，由于GCDN做了整合调整，现在关注产品交流等原因GCDN Blog关闭了，只好把一些有用点的搬过来了。2009年8月13日 12:29 by winking写这篇博客，原起今天CyljXu问我一个问题：如何通过反射调用带有ref或者out的参数的方法？想着可能其他人也会遇到这个问题，权且记录下来，以备后行者搜索到。 这个在MSDN上有解释，参考MethodBase.Invoke...</content></entry><entry><id>http://www.cnblogs.com/winkingzhang/archive/2010/01/12/1645053.html</id><title type="text">Win7硬盘安装和移动硬盘访问出错的修复办法[迁移]</title><summary type="text">原帖放在GCDN上，由于GCDN做了整合调整，现在关注产品交流等原因GCDN Blog关闭了，只好把一些有用点的搬过来了。2009年8月17日 17:10 by winking前不久终于拿到了Windows 7 RTM，迫不及待的就想在物理机器上安装，但是没借到光盘，只好思量如何硬盘安装了。几经尝试，得出安装方法如下：1、使用虚拟光驱软件（如Daemon Tools）加载ISO，将其中内容全部拷贝...</summary><published>2010-01-12T05:48:00Z</published><updated>2010-01-12T05:48:00Z</updated><author><name>winkingzhang</name><uri>http://www.cnblogs.com/winkingzhang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/winkingzhang/archive/2010/01/12/1645053.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/winkingzhang/archive/2010/01/12/1645053.html"/><content type="text">原帖放在GCDN上，由于GCDN做了整合调整，现在关注产品交流等原因GCDN Blog关闭了，只好把一些有用点的搬过来了。2009年8月17日 17:10 by winking前不久终于拿到了Windows 7 RTM，迫不及待的就想在物理机器上安装，但是没借到光盘，只好思量如何硬盘安装了。几经尝试，得出安装方法如下：1、使用虚拟光驱软件（如Daemon Tools）加载ISO，将其中内容全部拷贝...</content></entry><entry><id>http://www.cnblogs.com/winkingzhang/archive/2009/06/14/1502901.html</id><title type="text">zt. Windows Mobile开发文章收藏</title><summary type="text">入门或理论研究系列文章 智能手机 手机词汇 研发手机基本流程 我理解的Windows moblie J2ME，CompactFramework,c＋＋，我该如何取舍 Windows Mobile Jump Start Guide 从0开始Windows Mobile 开发 3G 手机流媒体应用，看上去很美 基于rtsp的手机视频点播实现和研究 手机流媒体UI开发WINCE应用的UI实现方案 &amp;md...</summary><published>2009-06-14T01:37:00Z</published><updated>2009-06-14T01:37:00Z</updated><author><name>winkingzhang</name><uri>http://www.cnblogs.com/winkingzhang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/winkingzhang/archive/2009/06/14/1502901.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/winkingzhang/archive/2009/06/14/1502901.html"/><content type="text">入门或理论研究系列文章 智能手机 手机词汇 研发手机基本流程 我理解的Windows moblie J2ME，CompactFramework,c＋＋，我该如何取舍 Windows Mobile Jump Start Guide 从0开始Windows Mobile 开发 3G 手机流媒体应用，看上去很美 基于rtsp的手机视频点播实现和研究 手机流媒体UI开发WINCE应用的UI实现方案 &amp;md...</content></entry><entry><id>http://www.cnblogs.com/winkingzhang/archive/2009/01/15/1376479.html</id><title type="text">[WPF]在Style中设置ToolTip的问题分析</title><summary type="text">刚才开到智者千虑发的【WPF】在Style中设置ToolTip的问题的博文，虽然最终给了一个暂时解决问题的方案，但是没有分析和解释其中的问题，正与他所说：但至于为什么不能直接在Setter.Value中放置TextBlock还是一个未解之谜。趁着中午间隙，跟踪了一下，这里我将带给你完整的分析。</summary><published>2009-01-15T08:49:00Z</published><updated>2009-01-15T08:49:00Z</updated><author><name>winkingzhang</name><uri>http://www.cnblogs.com/winkingzhang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/winkingzhang/archive/2009/01/15/1376479.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/winkingzhang/archive/2009/01/15/1376479.html"/><content type="text">刚才开到智者千虑发的【WPF】在Style中设置ToolTip的问题的博文，虽然最终给了一个暂时解决问题的方案，但是没有分析和解释其中的问题，正与他所说：但至于为什么不能直接在Setter.Value中放置TextBlock还是一个未解之谜。趁着中午间隙，跟踪了一下，这里我将带给你完整的分析。</content></entry><entry><id>http://www.cnblogs.com/winkingzhang/archive/2009/01/13/1374681.html</id><title type="text">[WPF]RadioButton在Group的Header区部分不响应鼠标选择的bug分析</title><summary type="text">昨晚看到南柯之石的WPF BUG之四：点击RadioButton的空白没有反应，就做了简单的验证，之后发表了一些分析和看法，但是那个分析不够准确和充分，导致了对别人的想法一些误导。在此表示歉意。这里我会从头做分析。</summary><published>2009-01-13T05:54:00Z</published><updated>2009-01-13T05:54:00Z</updated><author><name>winkingzhang</name><uri>http://www.cnblogs.com/winkingzhang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/winkingzhang/archive/2009/01/13/1374681.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/winkingzhang/archive/2009/01/13/1374681.html"/><content type="text">昨晚看到南柯之石的WPF BUG之四：点击RadioButton的空白没有反应，就做了简单的验证，之后发表了一些分析和看法，但是那个分析不够准确和充分，导致了对别人的想法一些误导。在此表示歉意。这里我会从头做分析。</content></entry><entry><id>http://www.cnblogs.com/winkingzhang/archive/2008/12/01/1344816.html</id><title type="text">WPF模式思考 （zt）</title><summary type="text">Xaml的出现使得Win下非常有效的MVC变得复杂了很多很多，而WPF的发布使得Web程序和Win程序的鸿沟渐渐填平，对于模式的思考也渐渐浮出来：是使用复杂化的MVC，还是微软提出的MVP，抑或其他的模式。</summary><published>2008-12-01T03:59:00Z</published><updated>2008-12-01T03:59:00Z</updated><author><name>winkingzhang</name><uri>http://www.cnblogs.com/winkingzhang/</uri></author><link rel="alternate" href="http://www.cnblogs.com/winkingzhang/archive/2008/12/01/1344816.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/winkingzhang/archive/2008/12/01/1344816.html"/><content type="text">Xaml的出现使得Win下非常有效的MVC变得复杂了很多很多，而WPF的发布使得Web程序和Win程序的鸿沟渐渐填平，对于模式的思考也渐渐浮出来：是使用复杂化的MVC，还是微软提出的MVP，抑或其他的模式。</content></entry></feed>
