Ric*_*h N 6 c# visual-studio nuget
在 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。
小智 6
问题是有两个不同版本的Microsoft.VisualStudio.Validation.dll文件,VS(MSBuild) 可以\xe2\x80\x99t 确认使用哪个版本。一个来自已安装的 NuGet 包,另一个来自系统参考(集成在 VS 中)。当然,VS选择使用第一种。
解决方案应该是安装单个Microsoft.VisualStudio.ValidationNuGet 包,版本16.10.34。是的,它可以在nuget.org.
我认为这不是一个真正的解决方案,它确实使警告消失,但在我看来,应该从 NuGet package( Microsoft.VisualStudio.SDK) 端解决该问题。在安装/更新软件包期间,还应自动安装Microsoft.VisualStudio.SDK16.10.XX 版本的软件包。Microsoft.VisualStudio.Validation也许这个问题会在新发布的版本中得到修复Microsoft.VisualStudio.SDK,我不确定。
| 归档时间: |
|
| 查看次数: |
868 次 |
| 最近记录: |