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

时间:2018-08-28 17:29:12

标签: visual-studio-extensions vsix

需要创建通用的VSIX扩展,这些扩展需要支持所有版本的Visual Studio(2010年至2017年)。

为了达到上述要求,我参考了以下链接。

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

在那之后,他们要求使用Visual Studio包模板将包(转到“ Visual Studio C#项|扩展性| VSPackage”节点,选择Visual Studio包模板并将其命名为MyPackage.cs)添加到VSIX项目中。在VSIX项目中,但是我的Visual Studio没有Visual Studio包项目模板。它仅具有Visual Studio AsyncPackage模板。我在下面添加了我的Visual Studio详细信息。

enter image description here

Visual Studio旧版本仅具有“ Visual Studio软件包”选项,并且他们建议立即使用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已安装的计算机中才有效。请对此提出建议。

1 个答案:

答案 0 :(得分:7)

我是《 MSDN杂志》文章的作者。它是在将Visual Studio Package项目模板替换为Visual Studio Async Package项目模板之前编写的。

即使您可以获得模板(从旧的VS版本),也无法使用单个VSIX从VS 2010定位到VS 2017,这是由于清单的三个不同版本所致,如本文所述。最多可以将VS 2012定位到VS 2017。

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

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

底线:集中精力在必须针对VS 2010-2019创建的两个软件包项目之间重用尽可能多的代码。