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

Kar*_*thi 4 vsix visual-studio-extensions

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

我提到了以下链接来实现上述要求.

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

在那里,他们告诉要使用VSIX项目中的Visual Studio包模板将包(转到Visual Studio C#Items | Extensibility | VSPackage节点,选择Visual Studio包模板并将其命名为MyPackage.cs)添加到VSIX项目但是我的visual studio没有Visual Studio Package项目模板.它只有Visual Studio AsyncPackage模板.我在下面添加了我的视觉工作室详情.

在此输入图像描述

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项目编译时面临编译错误.

在此输入图像描述

请提出解决方案的任何解决方案,或者以其他方式建议达到我的要求.

注意:我在vsixmanifest文件中使用VS2012和Visual Studio支持的版本创建了一个项目.它仅在VS2012安装的机器上工作.请就此提出建议.

Car*_*ero 8

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

即使您可以获得模板(来自旧的VS版本),由于清单的三个不同版本(如文章中所述),因此无法使用单个VSIX从VS 2010定位到VS 2017.最多,您可以从VS 2012定位到VS 2017.

但鉴于微软推动在VS 2017 15.8和未来VS 2019 16.0和16.1中使用异步软件包(至少对于自动加载软件包)(请参阅通过更新扩展的自动加载行为来提高关键方案的响应性),这是最好的面向未来的方法是为VS 2010-2013开发非异步软件包,为VS 2015-2017开发另一个异步软件包.因为今天您的软件包可能不需要自动加载(不需要异步软件包),但未来它可能需要自动加载(然后您将被迫异步软件包),或者微软可能会决定VS 2019 16.2即使不是-autoload包也必须是异步的...

注意:您可以使用示例Visual Studio 2013向后兼容的异步软件包在VS 2013及更高版本上尝试使用异步软件包,但如果您还需要定位VS 2010和2012,则不值得.

底线:将时间集中在在必须创建的目标VS 2010-2019的两个软件包项目之间重用尽可能多的代码.