visual-studio-2017 - 如何避免在 Visual Studio 2017 中加载 Microsoft.VisualStudio.Threading 时出现错误

标签 visual-studio-2017 visual-studio-extensions visual-studio-sdk

我已在仅针对 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。

您可以在那里检查依赖关系:

enter image description here

此软件包还依赖于 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/

相关文章:

c++ - Utf-8 编码 visual studios 十进制值

c# - Visual Studio 可以为事件自动创建内联本地匿名方法而不是创建具体方法吗?

c# - 将“Interop.zkemkeeper.dll”导入到WCF服务时出错

visual-studio - 创建托管 PowerShell 的 Visual Studio 2013 扩展

c# - 如何获取 Visual Studio 2017 的当前主题

visual-studio - Visual Studio 扩展未加载

c# - VSCT.exe 无法加载文件或程序集

visual-studio - 在未安装 VS 的情况下在构建服务器上构建 VS 2015 扩展?

.net - Microsoft Visual Studio SDK DSL工具-认真考虑吗?

c# - 无法删除\bin\roslyn\VBCSCompiler.exe - 访问被拒绝