增加所需的最低 VS 版本是必要的。
1.For 封装参考 https://learn.microsoft.com/en-us/nuget/consume-packages/package-references-in-project-files格式,如果一个项目引用了Microsoft.VisualStudio.SDK
包,这个项目实际上依赖于 nuget 包Microsoft.VisualStudio.SDK
依赖于取决于。我们称他们为nuget包依赖 https://stackoverflow.com/questions/28229892/nuget-package-dependencies.
2.而对于微软VisualStudio SDK https://www.nuget.org/packages/Microsoft.VisualStudio.SDK/15.9.3带有版本的包15.9.3
,它还取决于Microsoft.VisualStudio.Threading
包。(至少15.8.132,默认情况下nuget会下载15.8.132)
所以你的扩展项目实际上取决于Microsoft.VisualStudio.Threading.dll 15.8.0.0
.
3.而对于Microsoft.VisualStudio.Threading.dll
在路径下C:\Program Files (x86)\Microsoft Visual Studio\2017\xxx\Common7\IDE\PrivateAssemblies
,对于VS2017-15.9.16来说,其版本是15.8.0.0。对于VS2017-15.0.0,其版本是15.0.0.0。
那么如果我有 VS2017-15.6.x,我就可以拥有Microsoft.VisualStudio.Threading.dll
其版本在此范围内[15.0.0.0,15.8.0.0)。如果我们将依赖于版本 15.8.0.0 的程序集的扩展安装到比 15.8.x 更旧的 vs 版本中,我们将遇到类似的问题。
我可以看到两种可能的解决方案
我认为您的用户在使用旧版本时可能会遇到类似的情况。如果他将 vs 更新到最新的 vs2017-15.9.17,这个问题就会消失。是的,如果你使用Microsoft.VisualStudio.SDK
版本 15.9.3,请将 Visual Studio 的最低版本设置为 15.9.3。
您可以在那里检查依赖关系:
该软件包还依赖于 15.9.2x 甚至 15.9.3 版本的软件包。为了避免遇到类似的问题,例如Could not load file or assembly 'xxx, Version=15.9.0.0
,建议增加最低要求,使VS版本与VS SDK版本一致。 (在15.9.0版本的VS中,我们可能不会遇到15.8.0.0无法加载xxx的问题,但15.9.2.0可能会遇到无法加载xxx的问题)
希望能帮助到你 :)