我有一个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中安装会有问题。)
答案 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。来自哪里?两种方法:
使用NuGet package to get Microsoft.VisualStudio.Data.Framework。 (确保参考版本14.0.x,而不是版本15.x)
创建一个文件夹,放在Microsoft.VisualStudio.Data.Framework版本14.0.x中,并将该文件夹与项目一起添加到源代码管理中。