如何为多个Visual Studio版本打包基于VSIX的扩展?

弗洛里安·格雷纳赫(Florian Greinacher)

我正在维护公司内部的Visual Studio扩展,该扩展已打包并部署为VSIX容器。此扩展当前以VS 2010为目标。它使用多个VS API DLL,并引用了它们的VS 2010版本。

我目前正在迁移此扩展程序,以使其与VS 2012/2013兼容。我已经发现旧的VSIX清单可以手动编辑,以允许该扩展程序另外安装到VS 2012/2013-完美地工作。

但是,我当前使用的某些VS 2010 API与VS 2012 ++不兼容,我需要对其进行更新-从而放弃向后兼容。

我的问题是:如何构造我的解决方案和VSIX,使其与VS 2010、2012和2013兼容。是否有一个针对VS 2010的DLL和一个针对VS 2012/2013的DLL并选择一个要使用的DLL是否可行?在扩展加载时间?

旁注:我正在使用MEF来构成我的内部功能单元。这会以任何方式使它更容易吗?

埃夫兰·科比西(Efran Cobisi)

您可以:

  1. 将这两个特定于版本的程序集公开的功能解耦到一个临时接口(如果需要,可以将其自身放入主机程序集),就像对其他所有MEF插件所做的一样;叫它吧IDoWork
  2. 以两种具体类型实现上述接口,由两种不同的程序集公开,每种类型针对您所支持的VS版本,例如DoWorkVs2010DoWorkVs2012

    • AssemblyForVS2010.dll-> DoWorkVs2010:IDoWork
    • AssemblyForVS2012.dll-> DoWorkVs2012:IDoWork

3.(可选[导出]两种类型,以通过MEF提供它们;例如:

    [Export(typeof(IDoWork))]
    class DoWorkVs2010 : IDoWork
    {
        // ...
    }

4.在您的主机部件中添加一个工厂(该工厂直接与VSX一起加载),然后在此处基于DTE版本构建您要查找的具体类型:

    static class DoWorkFactory
    {
        internal static IDoWork Build()
        {
            // Load the version-specific assembly

            // - Via reflection (see http://stackoverflow.com/a/465509/904178)
            // - Or via MEF

            return ...;
        }
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何为多个Visual Studio版本打包基于VSIX的扩展?

来自分类Dev

Visual Studio扩展-支持VS的多个版本

来自分类Dev

如何删除已安装的Visual Studio 2013扩展.vsix文件?

来自分类Dev

如何为文档注册Visual Studio扩展程序提供程序

来自分类Dev

如何为 Visual Studio Code 创建 Stripe 扩展

来自分类Dev

如何为Visual Studio 2015设置dnvm版本

来自分类Dev

如何创建针对Visual Studio社区版的Visual Studio扩展(vsix)

来自分类Dev

如何创建针对Visual Studio社区版的Visual Studio扩展(vsix)

来自分类Dev

如何为Visual Studio创建动态定义?

来自分类Dev

如何为Java设置Visual Studio 2013

来自分类Dev

Visual Studio扩展项目:如何更改目标Visual Studio版本?

来自分类Dev

使用.NET 5.0编写Visual Studio扩展(VSIX)

来自分类Dev

无法在Visual Studio Express 2013中安装VSIX扩展文件?

来自分类Dev

如何在Mac上的Visual Studio中安装.vsix扩展文件?

来自分类Dev

如何为多个文件上传创建基于类的视图

来自分类Dev

旧版本的Visual Studio扩展

来自分类Dev

如何打包面向通用Windows平台并依赖Visual Studio扩展SDK的.NET库?

来自分类Dev

如何为Visual Studio 2010或2013的备用文件扩展名获取语法突出显示?

来自分类Dev

如何为Visual Studio 2010或2013的备用文件扩展名获取语法突出显示?

来自分类Dev

如何为特定配置生成Visual Studio项目?

来自分类Dev

如何为Xamarin.Android设置Visual Studio?

来自分类Dev

如何为Visual Studio 2013安装YAML-cpp?

来自分类Dev

如何为Visual Studio 2013 python工具安装mysql包

来自分类Dev

如何为不同的体系结构构建Visual Studio项目

来自分类Dev

如何为Visual Studio代码添加方法说明?

来自分类Dev

如何为特定配置生成Visual Studio项目?

来自分类Dev

如何为Visual Studio 2013 Community Edition获取Android SDK

来自分类Dev

如何为Visual Studio 2013 python工具安装mysql包

来自分类Dev

如何为不同的体系结构构建Visual Studio项目

Related 相关文章

  1. 1

    如何为多个Visual Studio版本打包基于VSIX的扩展?

  2. 2

    Visual Studio扩展-支持VS的多个版本

  3. 3

    如何删除已安装的Visual Studio 2013扩展.vsix文件?

  4. 4

    如何为文档注册Visual Studio扩展程序提供程序

  5. 5

    如何为 Visual Studio Code 创建 Stripe 扩展

  6. 6

    如何为Visual Studio 2015设置dnvm版本

  7. 7

    如何创建针对Visual Studio社区版的Visual Studio扩展(vsix)

  8. 8

    如何创建针对Visual Studio社区版的Visual Studio扩展(vsix)

  9. 9

    如何为Visual Studio创建动态定义?

  10. 10

    如何为Java设置Visual Studio 2013

  11. 11

    Visual Studio扩展项目:如何更改目标Visual Studio版本?

  12. 12

    使用.NET 5.0编写Visual Studio扩展(VSIX)

  13. 13

    无法在Visual Studio Express 2013中安装VSIX扩展文件?

  14. 14

    如何在Mac上的Visual Studio中安装.vsix扩展文件?

  15. 15

    如何为多个文件上传创建基于类的视图

  16. 16

    旧版本的Visual Studio扩展

  17. 17

    如何打包面向通用Windows平台并依赖Visual Studio扩展SDK的.NET库?

  18. 18

    如何为Visual Studio 2010或2013的备用文件扩展名获取语法突出显示?

  19. 19

    如何为Visual Studio 2010或2013的备用文件扩展名获取语法突出显示?

  20. 20

    如何为特定配置生成Visual Studio项目?

  21. 21

    如何为Xamarin.Android设置Visual Studio?

  22. 22

    如何为Visual Studio 2013安装YAML-cpp?

  23. 23

    如何为Visual Studio 2013 python工具安装mysql包

  24. 24

    如何为不同的体系结构构建Visual Studio项目

  25. 25

    如何为Visual Studio代码添加方法说明?

  26. 26

    如何为特定配置生成Visual Studio项目?

  27. 27

    如何为Visual Studio 2013 Community Edition获取Android SDK

  28. 28

    如何为Visual Studio 2013 python工具安装mysql包

  29. 29

    如何为不同的体系结构构建Visual Studio项目

热门标签

归档