【问题标题】:What is the Correct Way to Resolve Versioning Conflicts in Microsoft NuGet Package References?解决 Microsoft NuGet 包引用中版本控制冲突的正确方法是什么?
【发布时间】:2021-11-08 15:31:16
【问题描述】:

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

我可以使用它来创建 C# VSIX 项目。如果我这样做,它会按照您的预期构建和运行,并且不会出现编译器警告或错误。

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

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

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

Found conflicts between different versions of "Microsoft.VisualStudio.Validation" that could not be resolved. There was a conflict between "Microsoft.VisualStudio.Validation, Version=16.9.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" and "Microsoft.VisualStudio.Validation, Version=16.10.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a". "Microsoft.VisualStudio.Validation, Version=16.9.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" was chosen because it was primary and "Microsoft.VisualStudio.Validation, Version=16.10.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" was not.

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

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

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

【问题讨论】:

    标签: c# visual-studio nuget


    【解决方案1】:

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

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

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

    【讨论】:

    • 我认为你是对的,目前的答案是选择一个看起来正确的版本,安装它,并希望它能正常工作。这至少使警告消失了。和你一样,我希望微软能修复他们的软件包,或者至少就这些问题发布一些指导。
    猜你喜欢
    • 2018-10-26
    • 1970-01-01
    • 2011-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多