gpt4 book ai didi

c# - 解决 Microsoft NuGet 包引用中的版本冲突的正确方法是什么?

转载 作者:行者123 更新时间:2023-12-05 02:37:50 25 4
gpt4 key购买 nike

在 Visual Studio 2019 16.11.5(最新)中,我安装了“Visual Studio 扩展开发”工作负载。

我可以使用它来创建 C# VSIX 项目。如果我这样做,它会像您预期的那样构建和运行良好,并且没有编译器警告或错误。

如果我转到“工具/管理 NuGet 程序包”寻求解决方案...我可以看到我安装了 NuGet 程序包 Microsoft.VisualStudio.SDK v16.0.206,但最新版本是 v16.10.31321.278。

如果我转到“更新”选项卡,我可以选择包并单击“更新”以获取最新版本。

在我执行此操作后,该项目仍会构建并运行,但我收到有关依赖库版本不兼容的编译器警告:

发现不同版本的“Microsoft.VisualStudio.Validation”之间存在无法解决的冲突。 “Microsoft.VisualStudio.Validation,Version=16.9.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”和“Microsoft.VisualStudio.Validation,Version=16.10.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”之间存在冲突。选择“Microsoft.VisualStudio.Validation,Version=16.9.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”是因为它是主要的,而“Microsoft.VisualStudio.Validation,Version=16.10.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”是不是。

关于不兼容出现的地方有更多细节,似乎是说主包引用 16.9.0,一些依赖库引用 16.10.0。如果我查看 project.assets.json,我可以看到构建实际上使用了 v16.9.32。

所以问题是:删除此编译器警告并安全使用最新 SDK 构建我的 VSIX 的正确做法是什么?

阅读本文后,我看到了一些选择。我可以抑制警告,但我看不出如何抑制它,因为它没有代码。我无法升级包。或者我可以安装特定版本的 Microsoft.VisualStudio.Validation 并使用绑定(bind)重定向来消除警告,尽管我不知道该版本应该是什么。如果程序集使用 semver,则 16.10.x 似乎是正确的库,而不是构建使用的 16.9.32。

最佳答案

问题是 Microsoft.VisualStudio.Validation.dll 文件有两个不同的版本,VS(MSBuild) 无法确认使用哪个版本。一个来自已安装的 NuGet 包,另一个来自系统引用(集成在 VS 中)。 VS当然选择使用primary。

解决方案应该是安装一个 Microsoft.VisualStudio.Validation NuGet 包,版本 16.10.34。是的,它在 nuget.org 上可用。

我认为这不是一个真正的解决方案,它确实让警告消失了,但在我看来,这个问题应该从 NuGet package(Microsoft.VisualStudio.SDK) 端解决。在安装/更新 Microsoft.VisualStudio.SDK 包期间,版本 16.10.XX 的 Microsoft.VisualStudio.Validation 包也应该自动安装。也许这会在新发布的 Microsoft.VisualStudio.SDK 包版本中得到修复,我不确定。

关于c# - 解决 Microsoft NuGet 包引用中的版本冲突的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69885999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com