VSX-2 搭建项目
由于是公司的项目,也不可能直接拿过来写博客,所以准备搭建一个自己的VSX项目。 项目需求这里就不写了,大体可参考曾经的一篇文章,这个VSX项目就是用来简化插件式开发。 本文开始正式记录做这个VSX项目的关键点,如果读者没有接触过VSX开发,请参考LearnVSXNow!,这里有译文
项目结构
项目使用模块化开发,将多个VSPackage打包成VSIX项目,可随意删减增加模块。提出一个公共的项目,用来简化VSX开发,分离SDK相关对象。 项目结构大概如下:

每个模块都是相对独立的功能,公共部分在Frramework工程中,以简化VSX开发,最后使用VSIX项目进行组装。大体结构就是这样。
VSIX
安装VS2010SDK后,在新建项目中就能看到Extensibility类别,其中包括如下几个项目模板:

首先创建一个VSIX项目。VSIX相当于Java中的Jar包,实际上VSIX也可以和Jar包一样,使用各类压缩解压缩软件打开。 新建的VSIX项目中,只有一个source.extension.vsixmanifest文件,在VS2010中直接双击该文件,会使用设计器打开(我们自己也能做这种设计器,后面可能会介绍)。

这里第一感觉就是安装程序的一些信息,一些产品名称,作者,版权之类的东西,比较重要的是下面的两个列表框:References和Content。 先不管这两个都有什么用处,直接点F5运行该项目,发现又启动了一个VS,在标题栏中可以看到后面有实验实例的字样,依次选择:工具-扩展管理器,可以看到咱们新建的VSIX项目,右边可看到一些在vsixmanifest文件中填入的信息。
查看刚刚新建的VSIX项目的属性发现,在调试中,启动操作项选择了启动外部程序,并且里面是当前VS的程序路径,命令行参数中为/rootsuffix Exp,所以在点击F5调试时会启动一个实验实例。 需要注意的是有时候直接启动可能不会即使更新修改的VSX,暂时还没弄明白是什么原因造成的,有时候调试比较麻烦。
一些问题
上面提到了vsixmanifest中的Content,上图中可以看到我将其他VSPackage、Template或ToolBox加入了Content中,根据不同的项目我们把需要的模块添加到Content中,比如这里我没有添加WPF ToolBox的模块。 在上面实验实例的扩展管理器中,出现了很多个扩展,而这些扩展都是各个模块,不应该出现再扩展管理器中。我们想要的效果是只在扩展管理器中出现一个扩展,就是我们的VSIX项目。 为了解决这个问题,我尝试了每个模块的一些属性,发现在每个模块项目属性中,出现有如下选项:

默认是勾选了前两项的,这里如果不想让其出现在扩展管理器中,只要取消勾选前两项即可。
项目中的Framework项目是用来简化VSX开发的,所以需要引用一些VSX开发使用到的dll,我懒得一个一个去引用,直接新建了一个VSPackage项目,因为只是提供公共方法,并不需要在这里做扩展,所以删除了项目中的所有文件,但是在编译的时候发现总是报错。查了查才知道必须修改一下项目文件才行。 先卸载该项目,然后点击右键,选择编辑项目文件,删除最后一个Import标签,也就是这一行:
<ImportProject="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\VSSDK\Microsoft.VsSDK.targets"/>
之后重新加载,则没有问题。但是如果需要其他项目引用,还需要给该项目强签名,这个很多人都知道,这里就不多说了。
至此整个项目结构就算基本搭建完成。
VSX-2 搭建项目的更多相关文章
- ASP.NET MVC搭建项目后台UI框架—1、后台主框架
目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...
- ASP.NET MVC搭建项目后台UI框架—11、自动加载下拉框查询
ASP.NET MVC搭建项目后台UI框架—1.后台主框架 需求:在查询记录的时候,输入第一个字,就自动把以这个字开头的相关记录查找出来,输入2个字就过滤以这两个子开头的记录,依次类推. 突然要用到这 ...
- ASP.NET MVC搭建项目后台UI框架—2、菜单特效
目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...
- ASP.NET MVC搭建项目后台UI框架—3、面板折叠和展开
目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...
- ASP.NET MVC搭建项目后台UI框架—4、tab多页签支持
目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...
- ASP.NET MVC搭建项目后台UI框架—5、Demo演示Controller和View的交互
目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...
- ASP.NET MVC搭建项目后台UI框架—6、客户管理(添加、修改、查询、分页)
目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...
- ASP.NET MVC搭建项目后台UI框架—7、统计报表
ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NET M ...
- ASP.NET MVC搭建项目后台UI框架—8、将View中选择的数据行中的部分数据传入到Controller中
目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...
- ASP.NET MVC搭建项目后台UI框架—9、服务器端排序
ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NET M ...
随机推荐
- java ——String , StringBuffer, StringBuilder类
一.String类概述 1.String对象一旦创建就不能改变. 2.字符串常量池. 字符串常量池的特点:池中有则直接使用,池中没有则创建新的字符串常量. 例1: “==” 比较两个对象是否引用同一 ...
- Linux上mariadb数据库(博客初学者使用测试)
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可.MariaDB由MySQL的创始人麦克尔·维德纽斯主导开发,他早前曾以10亿美元的价格,将自己创建的公司M ...
- js 去掉指定符号的字符串做法
//去掉字符串末尾指定符号 function RemoveSymbol(str, symbol) { if (str.charAt(str.length - 1) == symbol) { str = ...
- Uva 12299 带循环移动的RMQ(线段树)
题目链接:https://vjudge.net/contest/147973#problem/C 题意:传统的RMQ是一个不变的数组a求区间最值.现在要循环移动(往前移动). 分析:求区间问题,很容易 ...
- node.js 练习1
1.利用editplus 创建 n1.js 文件 2.输入代码 3.打开cmd 输入 node n1.js 4.打开浏览器 输入 localhost:8000 5.再次回看 cmd
- python读取mat文件
一.mat文件 mat数据格式是Matlab的数据存储的标准格式.在Matlab中主要使用load()函数导入一个mat文件,使用save()函数保存一个mat文件.对于文件 load('data.m ...
- logistic regression (逻辑回归) 概述
:http://hi.baidu.com/hehehehello/blog/item/0b59cd803bf15ece9023d96e.html#send http://en.wikipedia.or ...
- JavaSE 面试题总结
一. JavaSE 4 1. 面向对象的特征有哪些方面 4 2. String是最基本的数据类型吗? 4 3. super()与this()的区别? 4 4. JAVA的事件委托机制和垃圾回收机制 4 ...
- 爬虫学习(十四)——xpath项目实践
import osimport timeimport urllib.requestimport urllib.parsefrom lxml import etree # 构建面向对象的代码方式clas ...
- 远程桌面连接失败,提示CredSSP加密Oracel修正问题解决
今天远程桌面的时候失败了,出现以下提示 于是上网找解决办法,经过测试,该方法是可行的. 首先,在控制台中输入regedit,打开注册表