如何构建面向Visual Studio 2010-2017的Visual Studio扩展(VSIX)

时间:2017-02-16 09:17:46

标签: visual-studio visual-studio-2010 visual-studio-2015 visual-studio-extensions vsix

我们的构建环境是VS 2015(理想情况下),目标是.net 4.0

我们刚刚在VS 2015中基于Visual Studio可扩展性项目模板重新设计了我们的visual studio插件。由此产生的VSIX在VS 2015& 2017 RC1。

但是我想在VS 2010(最好是2012年)定位VSIX。这就是问题的起源......

  • VS 2010使用.net 4.0。
  • 我将编译器删除到.net 4.0
  • VS 2015(4.5)程序集不会加载(即Microsoft.VisualStudio.Shell.14.0)。
  • 多数民众赞成好,因为我不会在其中使用任何内容,所以我删除了对它们的引用,而不是版本10.0(2010)。
  • 很好的代码编译。
  • 但是VSIX包没有
  

1> C:\ Program Files   (86)\的MSBuild \ 14.0 \ BIN \ Microsoft.Common.CurrentVersion.targets(1820,5):   警告MSB3274:主要参考   " Microsoft.VisualStudio.Imaging,Version = 14.0.0.0,Culture = neutral,   PublicKeyToken = b03f5f7f11d50a3a,processorArchitecture = MSIL"不能   得到解决,因为它建立在反对   " .NETFramework,版本= 4.5版"框架。这是一个比版本更高的版本   当前目标框架" .NETFramework,Version = v4.0"。

所以问题似乎是如果我以VS 2010为目标,我需要将其构建为.net 4.0,但VS 2015构建脚本需要.net 4.5。

我想知道是否可以在VS 2015项目中使用VS 2010构建工具?或者我必须将我的VS 2015项目转换回VS 2010吗?

更新

开始认为出于其他原因这是不可能的......

https://docs.microsoft.com/en-us/visualstudio/extensibility/faq-2017

  

新的VSIX v3格式向后兼容VSIX v2,所以你会这样做   仍然能够拥有一个VSIX具有单个VSIX ID的VSIX   支持Visual Studio 2012及更高版本。新的VSIX v3格式没有   支持Visual 2010及更早版本。 为了支持Visual Studio 2010,   您需要创建一个单独的扩展(使用单独的VSIX   ID)。

3 个答案:

答案 0 :(得分:2)

为VS 2010创建一个单独的项目和VSIX,为VS 2012及更高版本创建另一个项目。您可以在此处查看我的来源:https://github.com/ErikEJ/SqlCeToolbox

请注意,我的VS 2010扩展也需要.NET 4.5.1(只需要在PC上存在/安装.NET 4.5.1,它内置于Windows 8.1及更高版本中)

答案 1 :(得分:2)

我遇到了类似的问题,所以我创建了一个名为VsixUpdater的Nuget包,如果添加到VSIX项目,它可以自动执行VSIX迁移,它甚至适用于旧版本的Visual Studio(我在2012年测试过) ,添加软件包后,生成的VSIX软件包将兼容V3和2017,详见https://github.com/axodox/VsixUpdater

答案 2 :(得分:0)

最后我结束了2个项目

  • 使用2.0版清单(使用VS 2015构建)在.Net 4.0下编译的VS 2010项目。
  • 在.Net 4.5下编译的针对VS 2012 +的项目 使用3.0版清单(使用VS 2015构建)。

参考文献中有一定程度的提及,但这一切似乎都有效。我们唯一突出的问题是代码签名,因为VS 2015不接受SHA256以下的任何内容,VS 2012将不接受SHA256 ....