将VS 2012扩展从VS 2013/2015编译

3
我在VS 2012推出时编写了这个扩展程序。当时我在VS 2012上编译这个扩展程序,并且只针对VS 2012进行了优化。
随后,当VS 2013发布时,我重新编译了这个扩展程序,以便该程序也可以安装在VS 2013上。扩展程序本身的代码可在VS 2012/2013/2015上无需更改即可运行。因此,为了允许在VS 2013上安装该程序,我仅更新了.vsixmanifest文件,将所需的VS版本从原来的版本更改为:
<InstallationTarget Id="Microsoft.VisualStudio.Pro" Version="11.0" />

to

<InstallationTarget Id="Microsoft.VisualStudio.Pro" Version="[11.0,12.0]" />

看起来它运行得很好。

然而,当我后来卸载了我的VS 2012安装程序并想在VS 2013上编译扩展时,我遇到了以下引用的问题:

<Reference Include="Microsoft.VisualStudio.CoreUtility, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
<Reference Include="Microsoft.VisualStudio.Editor, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
<Reference Include="Microsoft.VisualStudio.Text.Data, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
<Reference Include="Microsoft.VisualStudio.Text.UI, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
<Reference Include="Microsoft.VisualStudio.Text.UI.Wpf, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />

无法找到这些程序集的11版本。我编辑了项目文件:

<Reference Include="Microsoft.VisualStudio.CoreUtility" />
<Reference Include="Microsoft.VisualStudio.Editor" />
<Reference Include="Microsoft.VisualStudio.Text.Data" />
<Reference Include="Microsoft.VisualStudio.Text.UI" />
<Reference Include="Microsoft.VisualStudio.Text.UI.Wpf" />

然后在VS 2013上编译和运行正常,但显然扩展程序随后需要这些程序集的更新版本,而这些版本仅在VS 2013上可用。因此,该扩展程序无法在VS 2012上安装。我现在在使用VS 2015时遇到了类似的问题。
我认为我应该安装VS 2012 SDK,这将为我提供这些程序集的11版本,以便对其进行编译,但是必须先安装VS 2012才能安装此SDK。
是否有办法从VS 2015编译此扩展程序,同时允许该扩展程序在所有早至2012版本的VS上安装?
2个回答

3

这对我帮助很大,谢谢!为了节省时间,安装了VS中的NuGet包管理器扩展后,您可以右键单击“引用”,选择“管理NuGet程序包...”,点击“浏览”按钮,并搜索VSSDK.*包。一旦您选择所需的一个,它将下载并更新您的csproj引用。它还会生成一个packages.config文件,该文件显然会被重新生成,但通常会提交到源代码控制。 - Antonio Maiorano

0

我注意到每个Visual Studio版本都有不同版本的扩展。

如果VS对其所使用的程序集版本非常严格,那么我的建议是,不能仅使用一组依赖项创建单个项目,并创建适用于所有Visual Studio版本的扩展。

可能只需创建所需程序集的正确版本的副本,仍然可以在最新版本中编译早期版本的Visual Studio的扩展。 但是您需要拥有这些程序集。

这就是为什么我喜欢将第三方程序集检入源代码控制,并保留使用的每个程序集版本。 您可以使用标签和/或分支来管理每个扩展版本的发布。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接