我已在仅针对 Visual Studio 2019 的版本中记录了我的 Visual Studio 包的更新。其中一项更改是我开始使用 NuGet 包 Microsoft.VisualStudio.SDK 版本 16.0。 202 并删除了许多对 DLL 的单独引用。
现在,我已将最新版本的包移植回 Visual Studio 2017,并将多个 NuGet 包(例如 Microsoft.CodeAnalysis)降级到旧版本。
我已将 Microsoft.VisualStudio.SDK 降级到版本 15.9.3,这是最旧的可用版本。
最初,这似乎在多个系统上运行良好。但是,在一个系统上,我的包未加载,并且一条消息被写入事件日志,类似于
Could not load file or assembly 'Microsoft.VisualStudio.Threading, Version=15.8.0.0
(该消息实际上是德语,但这是等效的英语消息。)
我可以看到两种可能的解决方案:
[1]
扔掉 Microsoft.VisualStudio.SDK 并返回引用大量单独的 DLL。
我宁愿不这样做。
[2]
增加 Visual Studio 所需的最低版本号。
使用 Microsoft.VisualStudio.SDK 版本 15.9.3,我是否必须将 Visual Studio 的最低版本设置为 15.9.3?
(这会受到限制,但比不加载的包要好。)
最佳答案
增加所需的最低 VS 版本是必要的。
1.对于packageReference格式,如果一个项目引用 Microsoft.VisualStudio.SDK
包,这个项目实际上依赖于 nuget 包 Microsoft.VisualStudio.SDK
依赖于取决于。我们称它们为nuget package dependencies .
2.对于Microsoft.VisualStudio.SDK版本号为 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 版本中,我们将遇到类似的问题。
I can see two possible solutions
我认为您的用户在使用旧版本时可能会遇到类似的情况。如果他将 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的问题)
希望有帮助:)
关于visual-studio-2017 - 如何避免在 Visual Studio 2017 中加载 Microsoft.VisualStudio.Threading 时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58719511/