VS2008 AddIn 开发 WorkspaceAddIn 实例(支持VS2010)
2010年12月06日
不知道你有没有遇到这种情况: 当要找一些以前做的代码做参考的时候,总是在文件夹里翻来翻去,光看项目名字也还是想不起来重要的代码究竟在哪个工程里。因此,自己开发个AddIn来方便进行本地的代码管理,通过添加本地的某个文件夹管理下面的所有的Solution。在AddIn里,可以快速切换Solution,不用在资源浏览器里费劲找,同时通过Tag管理可以快速过滤,方便定位想要的代码。
请猛击这里下载:
VS2008_WorkspaceAddIn
VS2010_WorkspaceAddIn
安装 AddIn,只要将 .dll 和 .AddIn 文件拷贝到下面的路径,启动VisualStudio就可以了。
VS2008: [\Documents and Settings\My Documents\Visual Studio 2008\Addins]
VS2010: [\Documents and Settings\My Documents\Visual Studio 2010\Addins]
【功能介绍】
当然也支持VS2010
Workspace的数据都将保存在AddIn.dll的同级目录下的 WorkspaceAddIn.data.xml 中,
它是通过Xml序列化/反序列化进行的存取的。这里就不详细介绍了。
接下来简单介绍一下AddIn开发:
1. 创建一个AddIn工程(Other project types > Extensibility),如下图:
外接(插件)程序是一些可以为我们节省时间和精力的应用程序,可附加到 Visual Studio 集成开发环境 (IDE) 中使用。外接程序是 COM 对象,它们实现 IDTExtensibility2 接口,并通过 EnvDTE和 EnvDTE80 程序集中包含的核心自动化对象模型与 IDE 通信(EnvDTE: 支持VS2003以前的IDE, EnvDTE80:支持VS2005以后的IDE)。工具栏模型包含在 Microsoft.VisualStudio.CommandBars 中。使用到的主要对象就是DTE对象,利用它我们能编程控制在Visual Studio中的任何东西,从工具栏,装卸工具窗口,甚至编辑文件和初始化编译。
2. 实现 Connect.cs 的 OnConnection 方法
public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom) { // Cache the DTE and add-in instance objects _applicationObject = (DTE2)application; _addInInstance = (AddIn)addInInst; // Only execute the startup code if the connection mode is a startup mode if (connectMode == ext_ConnectMode.ext_cm_AfterStartup || connectMode == ext_ConnectMode.ext_cm_Startup) { try { // Declare variables EnvDTE80.Windows2 toolWins; object objTemp = null; // The Control ProgID for the user control string ctrlProgID = "WorkSpaceAddin.UI.WorkSpaceWindow"; string ctrlProgName = "WorkSpaceAddin"; // This guid must be unique for each different tool window, // but you may use the same guid for the same tool window. // This guid can be used for indexing the windows collection, // for example: applicationObject.Windows.Item(guidstr) string guidStr = "{BCC6C29D-4B3D-4ce2-8715-7EB9279D6440}"; // Get the executing assembly... System.Reflection.Assembly asm = System.Reflection.Assembly.GetExecutingAssembly(); // Get Visual Studio's global collection of tool windows... toolWins = (Windows2)_applicationObject.Windows; // Create a new tool window, embedding the WorkSpaceWindow control inside it... _windowToolWindow = toolWins.CreateToolWindow2(_addInInstance, asm.Location, ctrlProgID, ctrlProgName, guidStr, ref objTemp); // Pass the DTE object to the user control... _workspaceWindow = (WorkSpaceWindow)objTemp; _workspaceWindow.DTE = _applicationObject; // and set the tool windows default size... _windowToolWindow.Visible = true; // MUST make tool window visible before using any methods or properties, // otherwise exceptions will occurr. //toolWin.Height = 400; //toolWin.Width = 600; _windowToolWindow.Height = 400; _windowToolWindow.Width = 280; } catch (Exception ex) { Debug.WriteLine(ex.Message); Debug.WriteLine(ex.StackTrace); } } }
OnConnection方法的第一个参数application就是DTE2的实例,而DTE2.Windows就是当前IDE里的视窗集合(比如:Output视窗,Debug视窗等),利用 DTE2.Windows.Create 方法可以创建一个工具视窗,并通过自定义的工具窗体的自定义的属性: _workspaceWindow.DTE = _applicationObject; 将DTE2引用传给作为AddIn的窗体,以控制IDE。
3. 实现自定义的工具窗体的应用--操作IDE
WorkspaceAddIn里主要的一些操作IDE的方法:
1) 打开一个Solution: DTE.Solution.Open(path);
2) 切换Solution,让IDE弹出保存提示框: vsPromptResult result = DTE.ItemOperations.PromptToSave;
3) 获取当前Solution:
System.Array projs = DTE.ActiveSolutionProjects as System.Array;
foreach (Project prj in projs)
{
MessageBox.Show(prj.Name);
}
4) 关于DTE2的编程模型请参考: DTE2的MSDN
4. 关于 AddIn 的配置文件 - xxx.AddIn Microsoft Visual Studio 9.0 WorkspaceAddIn WorkspaceAddIn For Source Manage WorkspaceAddIn.dll WorkspaceAddIn.Connect 0 0 0 节指定了AddIn实现的dll的路径,
配置了加载AddIn的行为: 值 说明
0 IDE启动的时不加载必须手动加载
1 IDE启动时自动加载
4 IDE从命令行启动时加载
关于AddIn配置的详细信息请参考: MSDN(Add-In Registration) 5. 另外,在IDE中手动管理AddIn
LoadBehavior, CommandPreLoad 的行为同样能在IDE中手动配置: IDE的工具栏中 Tools > Add-In Manager
还需要完善的:
1) Workspace 只加载 .sln 的文件,对于只有 .csproj 没有 .sln 的工程还没设计加载。
2) WebSite 还没有设计加载
3) 工程类型的判断上还存在问题
-- 全文完 --
发表评论
-
数据库设计
2012-01-20 02:48 573数据库设计 2011年01月12日 1.1 项目目的 ... -
Using CoCreateObjectDotNet to Access and Use .net Assemblies in InstallScript
2012-01-20 02:48 1177Using CoCreateObjectDotNet to A ... -
CPPUNIT使用说明
2012-01-20 02:48 1328CPPUNIT使用说明 2010年08月04日 CPPU ... -
安装单服务器版的Team Foundation Server
2012-01-20 02:48 833安装单服务器版的Team Fo ... -
神马都不是浮云
2012-01-19 10:41 640神马都不是浮云 2012年01月17日 心理准备每天都应 ... -
曾经神马梦想都是浮云!学校一切我伤不起你们,你们如何伤得起我?
2012-01-19 10:41 606曾经神马梦想都是浮云! ... -
神马都是浮云!
2012-01-19 10:41 555神马都是浮云! 2012年01月13日 兔年的201 ... -
珍惜自己
2012-01-19 10:41 595珍惜自己 4小时前 原始 -
完成端口的一些问题
2012-01-17 03:11 596完成端口的一些问题 2010年11月23日 测试完成端口 ... -
2011-9-13
2012-01-17 03:11 4762011-9-13 2011年09月13日 JavaSE ... -
如何保护自己的共享软件
2012-01-17 03:11 574如何保护自己的共享软 ... -
【转】C/C++ 面试题集锦
2012-01-17 03:11 1049【转】C/C++ 面试题集锦 2011年07月10日 1 ... -
c 试题
2012-01-17 03:11 1799c 试题 2010年06月02日 .1 若a、b、c、d ... -
团队口号
2012-01-16 01:45 1181团队口号 2010年01月06日 查看文章 口号大 ... -
激励口号
2012-01-16 01:45 610激励口号 2011年02月16日 ... -
行业的激励口号
2012-01-16 01:45 751行业的激励口号 2010年0 ... -
激励口号集锦
2012-01-16 01:44 674激励口号集锦 2009年07月18日 激励口号集锦增员类 ... -
团队精神训练团队口号精神口号团队心声营销口号知道口碑营销
2012-01-16 01:44 1084团队精神训练团队口号 ... -
ASP创建xml
2012-01-11 01:33 511ASP创建xml 2011年09月01日 Dim xml ... -
从实际出发
2012-01-11 01:33 563从实际出发 2011年09月01日 记得前几天看 ...
相关推荐
VS2008 AddIn Workspace 不知道你有没有遇到这种情况: 当要找一些以前做的代码做参考的时候,总是在文件夹里翻来翻去,光看项目名字也还是想不起来重要的代码究竟在哪个工程里。因此,自己开发个AddIn来方便进行...
vs2008 addin
nacl_sdk中的vs_addin,里面有应用实例,运行vs_addin下的install.bat, 可以生成vs2010,vs2012环境下的开发ppapi的插件
vs addin 开发例子 源代码 描述要大于20字
qt-vs-addin-1.2.5.part3
VS2008 AddIn 开发 – WorkspaceAddIn 实例(支持VS2010) 注意:需要自己将工程里的WorkspaceAddIn.AddIn复制到: \Documents and Settings\[UserName]\My Documents\Visual Studio 2008\Addins 下,并修改为 ...
VS2010-qt-vs-addin-1.1.11 VS2010-qt-vs-addin-1.1.11 VS2010-qt-vs-addin-1.1.11 VS2010-qt-vs-addin-1.1.11
qt-vs-addin-1.0.0,集成QT和VS2005辅助工具
qt内嵌入vs进行开发的连接工具,支持vs2008+qt4.7.3,傻瓜式安装
qt-vs-addin-1.2.5 可用在vs2010 的插件 qt-creator-5.0.3 这个版本好看,功能强大,界面好看。
qt-vs-addin-1.2.5.part2
qt-vs-addin-1.2.1-opensource用于Visual Studio 2010 中安装Qt 5,请下载qt-vs-addin-1.2.1-opensource.part1-3,将3个压缩包复制到一个文件夹中,对第一个压缩包用RAR解压缩
qt-vs-addin-1.2.4-opensourceQt,坦白来说,并不只是一个界面库,他是C++编程思想的集大成者。它是得到完善的C++应用程序框架。使用Qt,在一定程度上你获得的是一个“一站式”、“全方位”的解决方案,STL。string...
qt-vs-addin-1.2.5 for vc2010 可以用于Vc2010中的插件。 自带qt5.6帮助文档非常的方便好用。 https://blog.csdn.net/aasmfox/article/details/125495608
qt-vs-addin-1.1.11-opensource.part2
qt-vs-addin-1.1.10.exe 64位安装包 QT与VS混合开发 直接的安装文件
qt 5+vs2013 插件qt-vs-addin-1.2.5.exe,官网下载。文件较大,内容放置在百度网盘,打开txt中的链接即可,失效请私信,邮箱发送。
VS2010工程源代码,一个学习小Demo,不需要第三方支持,添加了一个菜单两个命令. 我的专栏http://blog.csdn.net/tom06写了一篇博客,简单介绍了一下,有运行截图
qt-vs-addin-1.1.7.part5.rarqt-vs-addin-1.1.7.part5.rar
qt-vs-addin-1.1.9 qt vs