繁体   English   中英

如何构建针对Visual Studio 2010-2017的Visual Studio扩展(VSIX)

[英]How do I build a Visual Studio Extension (VSIX) that targets Visual Studio 2010-2017

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

我们刚刚在VS 2015中基于Visual Studio扩展性项目模板对Visual Studio插件进行了重新设计。生成的VSIX在VS 2015和2017 RC1上效果很好。

但是,我想将VSIX定位于VS 2010(最好是2012)。 这是问题开始的地方。

  • 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(x86)\\ MSBuild \\ 14.0 \\ bin \\ Microsoft.Common.CurrentVersion.targets(1820,5):警告MSB3274:主要参考资料“ Microsoft.VisualStudio.Imaging,Version = 14.0.0.0,Culture =中立,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向后兼容,因此您仍然可以使用具有支持Visual Studio 2012及更高版本的单个VSIX ID的单个VSIX。 新的VSIX v3格式不支持Visual 2010和更早版本。 为了支持Visual Studio 2010以后的版本,您将需要创建一个单独的扩展 (具有单独的VSIX ID)。

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

请注意,我还需要对我的VS 2010扩展使用.NET 4.5.1(仅要求在PC上存在/安装.NET 4.5.1,并且该内置于Windows 8.1和更高版本)

我遇到了类似的问题,因此我创建了一个名为VsixUpdater的Nuget程序包,如果将其添加到VSIX项目中,它可以自动进行VSIX迁移,添加后甚至可以与旧版本的Visual Studio(我在2012年测试过)一起使用该软件包生成的VSIX软件包将与V3和2017兼容,有关详细信息,请参见https://github.com/axodox/VsixUpdater

最后我完成了两个项目

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

引用已经有一定的花俏了,但是这一切似乎都奏效。 我们唯一未解决的问题是代码签名,因为VS 2015将不接受SHA256以下的任何内容,而VS 2012将不接受SHA256。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM