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 ...
随机推荐
- IOS Get请求(请求服务器)
@interface HMViewController () <NSURLConnectionDataDelegate> @property (weak, nonatomic) IBOut ...
- 幻灯片的JQuqey的制作效果,只要几行代码
使用jquery.KinSlideshow.js就可以很轻松的实现幻灯片效果 htm代码: [html] <div id="focusNews" style=&quo ...
- java 生成12位随机数,解决The literal 9999999999999 of type int is out of range 问题
原本想这样产生一个随机数,但是你会看到,只要数字超过了9位数,就会出问题,提示“The literal 1000000000000 of type int is out of range” 解决方式是 ...
- 二叉索引树,LA2191,LA5902,LA4329
利用了二进制,二分的思想的一个很巧妙的数据结构,一个lowbit(x):二进制表示下的最右边的一个1开始对应的数值. 那么如果一个节点的为x左孩子,父亲节点就是 x + lowbit(x),如果是右孩 ...
- java常用输出技巧,debug
package control; import javax.swing.JFrame; public class DebugTest { public static void main(String[ ...
- 解方程求PH值,POJ(2006)
题目链接:http://poj.org/problem?id=2006 解题报告: 题意看了半天,没看懂,再加上化学没学好,更加让我头痛. 假设1L溶解了x摩尔的酸:ka=m*x*nx/ori-x; ...
- 转:spring mvc返回json数据格式
转:http://www.cnblogs.com/ssslinppp/p/4675495.html <Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: ...
- IBM带库加磁带操作
1.查询要弹出磁带的信息 可查询media日志,冻结,可用等,详情可查 查看带库空闲槽位 vmcheckxxx -rt tld -rn 0(0为带库名) 磁带详细信息: bpmedialist -m ...
- VPS一键测试脚本 / 自带结果导出
脚本命令 一下脚本可能卡住,运行时间长,建议在screen中运行. 1.秋水逸冰大佬的Bench.sh脚本 特点:用时较短,对系统测试全面,英文:但缺少国内节点测速 有趣的是,bench.sh既是脚本 ...
- 问题 C: B C++时间类的运算符重载
题目描述 C++时间类的运算符重载 定义一个时间类Time,其数据成员为表示时间的小时(hour).分(minute),秒(second). 重载运算符“+”,使之能用于时间对象的加法运算:重载运算符 ...