【发布时间】: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