在 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 似乎是正确的库,而不是构建正在使用的 …