使用多个VS版本

时间:2017-04-09 07:59:52

标签: c# .net visual-studio vsix

我有一个Visual Studio扩展(VSIX),可以在VS2015和VS2017中使用。 VSIX依赖于Microsoft.VisualStudio.Data.Framework,自从我在VS2017上开发以来,我的csproj中有以下行:

<Reference 
    Include="Microsoft.VisualStudio.Data.Framework, Version=15.0.0.0, 
    Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" 
/>

但是,当用户尝试在VS2015中安装我的扩展程序时,他们可以理解为例外:

  

无法加载文件或程序集&#39; Microsoft.VisualStudio.Data.Framework,Version = 15.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a&#39;或其中一个依赖。

我应该如何在VSIX中引用Microsoft.VisualStudio.Data.Framework同时针对两个VS版本?如果我将版本从15切换到14,我就无法在我的机器上构建,因为VS2015没有安装(我也怀疑用户在VS2017中安装会有问题。)

1 个答案:

答案 0 :(得分:1)

VS 2017文件夹Common7 \ IDE中的devenv.exe.config文件具有Microsoft.VisualStudio.Data.Framework从14.0.0.0版到15.0.0.0版的此绑定重定向:

<dependentAssembly>
   <assemblyIdentity name="Microsoft.VisualStudio.Data.Framework" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
   <bindingRedirect oldVersion="8.0.0.0-14.0.0.0" newVersion="15.0.0.0"/>
</dependentAssembly>

因此您的项目需要引用版本14.0.0.0。来自哪里?两种方法:

  1. 使用NuGet package to get Microsoft.VisualStudio.Data.Framework。 (确保参考版本14.0.x,而不是版本15.x)

  2. 创建一个文件夹,放在Microsoft.VisualStudio.Data.Framework版本14.0.x中,并将该文件夹与项目一起添加到源代码管理中。