由于是公司的项目,也不可能直接拿过来写博客,所以准备搭建一个自己的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标签,也就是这一行:

  1. <ImportProject="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\VSSDK\Microsoft.VsSDK.targets"/>

之后重新加载,则没有问题。但是如果需要其他项目引用,还需要给该项目强签名,这个很多人都知道,这里就不多说了。

至此整个项目结构就算基本搭建完成。

VSX-2 搭建项目的更多相关文章

  1. ASP.NET MVC搭建项目后台UI框架—1、后台主框架

    目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...

  2. ASP.NET MVC搭建项目后台UI框架—11、自动加载下拉框查询

    ASP.NET MVC搭建项目后台UI框架—1.后台主框架 需求:在查询记录的时候,输入第一个字,就自动把以这个字开头的相关记录查找出来,输入2个字就过滤以这两个子开头的记录,依次类推. 突然要用到这 ...

  3. ASP.NET MVC搭建项目后台UI框架—2、菜单特效

    目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...

  4. ASP.NET MVC搭建项目后台UI框架—3、面板折叠和展开

    目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...

  5. ASP.NET MVC搭建项目后台UI框架—4、tab多页签支持

    目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...

  6. 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 ...

  7. ASP.NET MVC搭建项目后台UI框架—6、客户管理(添加、修改、查询、分页)

    目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...

  8. ASP.NET MVC搭建项目后台UI框架—7、统计报表

    ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NET M ...

  9. ASP.NET MVC搭建项目后台UI框架—8、将View中选择的数据行中的部分数据传入到Controller中

    目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...

  10. ASP.NET MVC搭建项目后台UI框架—9、服务器端排序

    ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NET M ...

随机推荐

  1. ARM实验3 ——串口实验

    uart串口实验 实验内容: 编写UART模块程序,通过串口将信息打印到终端. 实验目的: 熟悉开发环境的使用. 掌握exynos4412处理器的UART功能. 实验平台: FS4412开发板,ecl ...

  2. 将Apache2.4手动安装成Windows的服务

    将Apache2.4手动安装成Windows的服务 可以选择在安装Apache时自动将其安装为一个服务.如果选择"for all users",那么Apache将会被安装为服务. ...

  3. jade在命令行实时编译

    jade文件: doctype html html head title jade study body h1 imoock jade study 在jade文件夹下,终端输入 jade index. ...

  4. 1.5配置NetBackup数据库备份策略(nbu策略catalog)

    1.5配置NetBackup数据库备份策略 建议定期备份NetBackup的索引数据库Catalog,以确保故障时的有效恢复.从Javaconsole可以进入备份NetBackup内部数据库配置窗口, ...

  5. vue 中$index $key 已经移除了

    https://cn.vuejs.org/v2/guide/migration.html#index-and-key-移除 之前可以这样: 1 2 3 4 5 6 <ul id="ex ...

  6. 11_1_GUI

    11_1_GUI 1. AWT AWT(Abstract Window Toolkit)包括了很多类和接口,用于Java Application的GUI(Graphics User Interface ...

  7. nvl()函数和nvl2()函数

    如果你某个字段为空,但是你想让这个字段显示0,可以使用nvl(字段名,0),当然这个0也可以换成其他东西,如:1,2,3…… 一 NVL(表达式1,表达式2) 如果表达式1为空值,NVL返回值为表达式 ...

  8. Webpack4 学习笔记五 图片解析、输出的文件划分目录

    前言 此内容是个人学习笔记,以便日后翻阅.非教程,如有错误还请指出 webpack打包图片和划分文件路径 使用图片的方式 通过 new Image() 在 css中设置 background-imag ...

  9. 【赛时总结】◇赛时·V◇ Codeforces Round #486 Div3

    ◇赛时·V◇ Codeforces Round #486 Div3 又是一场历史悠久的比赛,老师拉着我回来考古了……为了不抢了后面一些同学的排名,我没有做A题 ◆ 题目&解析 [B题]Subs ...

  10. spring-mybatis整合异常

    Failed to read artifact descriptor for XXXXXX:jar:XXXX.RELEAS 原因是maven的本地仓库没有设置好.在别处拷贝过来的项目会有自己的仓库位置 ...