我在构建项目时收到一个烦人的MSB3277警告。我将详细程度增加到"详细",并且能够从日志中获取以下信息:
There was a conflict between "Pathoschild.Http.Client, Version=3.0.0.0, Culture=neutral, PublicKeyToken=null" and "Pathoschild.Http.Client, Version=3.1.0.0, Culture=neutral, PublicKeyToken=null".
"Pathoschild.Http.Client, Version=3.0.0.0, Culture=neutral, PublicKeyToken=null" was chosen because it was primary and "Pathoschild.Http.Client, Version=3.1.0.0, Culture=neutral, PublicKeyToken=null" was not.
References which depend on "Pathoschild.Http.Client, Version=3.0.0.0, Culture=neutral, PublicKeyToken=null" [C:Usersdesau.nugetpackagespathoschild.http.fluentclient3.0.0libnetstandard1.3Pathoschild.Http.Client.dll].
C:Usersdesau.nugetpackagespathoschild.http.fluentclient3.0.0libnetstandard1.3Pathoschild.Http.Client.dll
Project file item includes which caused reference "C:Usersdesau.nugetpackagespathoschild.http.fluentclient3.0.0libnetstandard1.3Pathoschild.Http.Client.dll".
C:Usersdesau.nugetpackagespathoschild.http.fluentclient3.0.0libnetstandard1.3Pathoschild.Http.Client.dll
References which depend on "Pathoschild.Http.Client, Version=3.1.0.0, Culture=neutral, PublicKeyToken=null" [].
C:Usersdesau.nugetpackagesstronggrid .30.0libnetstandard1.3StrongGrid.dll
Project file item includes which caused reference "C:Usersdesau.nugetpackagesstronggrid .30.0libnetstandard1.3StrongGrid.dll".
C:Usersdesau.nugetpackagesstronggrid .30.0libnetstandard1.3StrongGrid.dll
如果我正确理解了这个日志,它告诉我我的项目引用了Pathoschild.Http.Client版本3.0和版本3.1。我理解对版本 3.1 的引用,因为我的项目引用了一个名为 StrongGrid 的 nuget 包,该包本身引用了 Pathoschild 版本 3.1
但我不明白对 3.0 版的引用来自哪里。
我正在使用Visual Studio 2017和MSBuild 15,以防这是有用的信息。
此问题的原因是StrongGrid
包的创作不正确。
StrongGrid
的版本0.30
是针对Pathoschild.Http.FluentClient
的版本3.1.0
构建的,但其用于创建 NuGet 包的.nuspec
文件仍将版本3.0.0
列为依赖项,因此使用项目将提取旧版本,从而产生无法解决的冲突。
若要变通解决此问题,可以通过向 csproj 文件添加包引用来替代版本,显式引用版本3.1.0
的Pathoschild.Http.FluentClient
。