我如何建立一个针对Visual Studio的2010 - 2017

问题描述:

我们构建环境的Visual Studio扩展(VSIX)是2015年VS(理想)针对.NET 4.0我如何建立一个针对Visual Studio的2010 - 2017

我们只是我们的Visual Studio插件的基础上再加工VS 2015中的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,Version = v4.5“框架。这是一个高于当前目标框架“.NETFramework,Version = v4.0”的 的版本。

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

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

UPDATE

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

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

新的VSIX V3格式是向后兼容VSIX V2,所以你” ll 仍然能够具有单个VSIX ID和 支持Visual Studio 2012及更高版本的单个VSIX。新的VSIX v3格式不支持Visual 2010及更早的版本,因此不支持 。 为了支持Visual Studio 2010,您需要创建一个单独的扩展(带有单独的VSIX ID)。

+0

为每个VS版本维护单独的项目以避免这些类型的兼容的问题。您可以单独拥有单独的.csproj,.sln和清单文件。其他资源如类文件,图像,xml可以在所有项目*享。 –

+0

这看起来似乎是唯一可行的解​​决方案,我想我可以在VS 2010和2012+ – Sprotty

为VS 2010创建单独的项目和VSIX,并为VS 2012和更高版本创建另一个项目。你可以在这里看看我的源代码:https://github.com/ErikEJ/SqlCeToolbox

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

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

最后,我结束了2个项目

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

已经有一定数量的参考文献,但似乎都有效。我们唯一突出的问题是代码签名,因为VS 2015不会接受任何低于SHA256的数据,VS 2012不会接受SHA256 ....