visual-studio-extensions - 如何为多个 Visual Studio 版本创建单个 VSIX 扩展?

标签 visual-studio-extensions vsix

需要创建需要支持所有版本的 Visual Studio(2010 到 2017)的通用 VSIX 扩展。

我引用了下面的链接来实现上述要求。

https://msdn.microsoft.com/en-us/magazine/mt493251.aspx

在那,他们告诉通过使用 VSIX 项目中的 Visual Studio 包模板将包(转到 Visual Studio C# 项目 | 扩展性 | VSPackage 节点,选择 Visual Studio 包模板并将其命名为 MyPackage.cs)到 VSIX 项目但我的 Visual Studio 没有 Visual Studio Package 项目模板。它只有 Visual Studio AsyncPackage 模板。我在下面添加了我的视觉工作室详细信息。

enter image description here

Visual Studio 旧版本只有“Visual Studio Package”选项,并且他们建议现在使用 AsyncPackage 为多个 Visual Studio 版本创建一个通用包。请在此处找到详细信息。

https://developercommunity.visualstudio.com/content/problem/293478/visual-studio-package-template-not-available-on-sd.html

如果我在 VSIX 项目中添加了 Visual Studio AsyncPackage,然后按照该过程,在 VSIX 项目编译时遇到以下编译错误。

enter image description here

请提出任何解决方案来解决该问题,或者请提出任何其他方式来实现我的要求。

注意:我在 vsixmanifest 文件中使用 VS2012 创建了一个带有 Visual Studio 支持版本的项目。它仅适用于安装了 VS2012 的机器。请就此提出建议。

最佳答案

我是 MSDN 杂志文章的作者。它是在 Visual Studio 包项目模板被 Visual Studio 异步包项目模板替换之前编写的。

即使您可以获得模板(来自旧 VS 版本),由于 list 的三个不同版本,如文章中所述,也不可能使用单个 VSIX 将 VS 2010 定位到 VS 2017。您最多可以将目标从 VS 2012 定位到 VS 2017。

但是考虑到微软在 VS 2017 15.8 和 future 的 VS 2019 16.0 和 16.1(见 Improving the responsiveness of critical scenarios by updating auto load behavior for extensions)中插入使用异步包(至少对于自动加载包),最好的面向 future 的方法是为 VS 开发一个非异步包2010-2013 和另一个用于 VS 2015-2017 的异步包。因为也许你的包今天不需要自动加载(不需要异步包),但可能在 future 它需要自动加载(然后你将被迫异步包),或者微软可能在 VS 2019 16.2 中决定甚至不需要- 自动加载包也必须是异步的...

注意:您甚至可以使用示例 Visual Studio 2013 backwards compatible async package 在 VS 2013 及更高版本上尝试异步包但如果您还需要针对 VS 2010 和 2012,这是不值得的。

底线:将您的时间集中在您必须创建以针对 VS 2010-2019 的两个包项目之间尽可能多地重用代码。

关于visual-studio-extensions - 如何为多个 Visual Studio 版本创建单个 VSIX 扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52063441/

相关文章:

visual-studio - 如何手动卸载 Visual Studio 2013 扩展?

c# - 在运行时导出自定义 EditorFormatDefinition

c# - 为什么修改本地数据时yield return不起作用?

c# - VS 2017无法在我自己的扩展中显示 "suggestion lamp"

visual-studio - Visual Studio 扩展包 - 自定义文件类型 - 编辑器和图标

c# - 在 Visual Studio 2010 扩展中获取默认项目目录

c# - 如何打开项目中的源文件?

vsix - 如何调试 Vsix 项目

c# - 在 ProjectTemplates 中使用多个 IWizard 实现

visual-studio-2010 - 如何创建运行 VSIX 方法的快捷方式?