【问题标题】:Conflict between two referenced assemblies两个引用程序集之间的冲突
【发布时间】:2017-06-05 07:54:06
【问题描述】:

我正在使用运行良好的.Net Core 应用程序。但是,今天我发现output 包含一个警告。将日志级别设置为detailed 后,我发现以下内容:

2>    Dependency "Microsoft.Extensions.DependencyModel, Version=1.0.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60".
2>        Could not resolve this reference. Could not locate the assembly "Microsoft.Extensions.DependencyModel, Version=1.0.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors.
2>            For SearchPath "C:\Users\Alex\.nuget\packages\microsoft.testplatform.testhost\15.0.0-preview-20161123-03\lib\netstandard1.5".
2>            Considered "C:\Users\Alex\.nuget\packages\microsoft.testplatform.testhost\15.0.0-preview-20161123-03\lib\netstandard1.5\Microsoft.Extensions.DependencyModel.winmd", but it didn't exist.
2>            Considered "C:\Users\Alex\.nuget\packages\microsoft.testplatform.testhost\15.0.0-preview-20161123-03\lib\netstandard1.5\Microsoft.Extensions.DependencyModel.dll", but it didn't exist.
2>            Considered "C:\Users\Alex\.nuget\packages\microsoft.testplatform.testhost\15.0.0-preview-20161123-03\lib\netstandard1.5\Microsoft.Extensions.DependencyModel.exe", but it didn't exist.
2>            For SearchPath "{CandidateAssemblyFiles}".
2>            Considered "C:\Users\Alex\.nuget\packages\xunit.runner.visualstudio\2.2.0-beta4-build1194\build\netcoreapp1.0\xunit.runner.visualstudio.dotnetcore.testadapter.dll",
2>              but its name "xunit.runner.visualstudio.dotnetcore.testadapter"
2>              didn't match the expected name "Microsoft.Extensions.DependencyModel, Version=1.0.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60".
2>            Considered "C:\Users\Alex\.nuget\packages\xunit.runner.visualstudio\2.2.0-beta4-build1194\build\netcoreapp1.0\xunit.runner.utility.dotnet.dll",
2>              but its name "xunit.runner.utility.dotnet"
2>              didn't match the expected name "Microsoft.Extensions.DependencyModel, Version=1.0.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60".
2>        Required by "C:\Users\Alex\.nuget\packages\microsoft.testplatform.testhost\15.0.0-preview-20161123-03\lib\netstandard1.5\testhost.dll".
2>        Required by "C:\Users\Alex\.nuget\packages\microsoft.testplatform.testhost\15.0.0-preview-20161123-03\lib\netstandard1.5\Microsoft.TestPlatform.CrossPlatEngine.dll".
2>    There was a conflict between "Microsoft.Extensions.DependencyModel, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60" and "Microsoft.Extensions.DependencyModel, Version=1.0.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60".
2>        "Microsoft.Extensions.DependencyModel, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60" was chosen because it was primary and "Microsoft.Extensions.DependencyModel, Version=1.0.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60" was not.
2>        References which depend on "Microsoft.Extensions.DependencyModel, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60" [C:\Users\Alex\.nuget\packages\microsoft.extensions.dependencymodel\1.0.0\lib\netstandard1.6\Microsoft.Extensions.DependencyModel.dll].
2>            C:\Users\Alex\.nuget\packages\microsoft.extensions.dependencymodel\1.0.0\lib\netstandard1.6\Microsoft.Extensions.DependencyModel.dll
2>              Project file item includes which caused reference "C:\Users\Alex\.nuget\packages\microsoft.extensions.dependencymodel\1.0.0\lib\netstandard1.6\Microsoft.Extensions.DependencyModel.dll".
2>                C:\Users\Alex\.nuget\packages\microsoft.extensions.dependencymodel\1.0.0\lib\netstandard1.6\Microsoft.Extensions.DependencyModel.dll
2>        References which depend on "Microsoft.Extensions.DependencyModel, Version=1.0.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60" [].
2>            C:\Users\Alex\.nuget\packages\microsoft.testplatform.testhost\15.0.0-preview-20161123-03\lib\netstandard1.5\Microsoft.TestPlatform.CrossPlatEngine.dll
2>              Project file item includes which caused reference "C:\Users\Alex\.nuget\packages\microsoft.testplatform.testhost\15.0.0-preview-20161123-03\lib\netstandard1.5\Microsoft.TestPlatform.CrossPlatEngine.dll".
2>                C:\Users\Alex\.nuget\packages\microsoft.testplatform.testhost\15.0.0-preview-20161123-03\lib\netstandard1.5\testhost.dll
2>                C:\Users\Alex\.nuget\packages\microsoft.testplatform.testhost\15.0.0-preview-20161123-03\lib\netstandard1.5\Microsoft.TestPlatform.CrossPlatEngine.dll
2>    C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(1909,5): warning MSB3277: Found conflicts between different versions of the same dependent assembly that could not be resolved.  These reference conflicts are listed in the build log when log verbosity is set to detailed.
2>  Done executing task "ResolveAssemblyReference".

There was a conflict between "Microsoft.Extensions.DependencyModel... 行。我不知道如何解决这个警告,因为我只是使用来自NuGet.Net standard 1.1System.Reflection.Emit 包并且不引用任何其他内容。

当然,我可以忽略这个警告,但是寻找一些解决方案

【问题讨论】:

  • 如何重现该问题。此外,这里有一个类似的问题,已通过安装 Beta 1269 修复。github.com/dotnet/cli/issues/5183
  • @ColeWu-MSFT 尝试克隆 this 存储库并构建。你应该得到同样的错误。并感谢您提供链接,它似乎已在发布版本中修复(以防您能够通过上面的 repo 重现错误)

标签: .net visual-studio msbuild .net-core .net-standard


【解决方案1】:

根据详细日志,我们发现你的代码需要依赖“Microsoft.Extensions.DependencyModel, Version=1.0.1.0。但是这个Version=1.0.0.0的依赖已经安装了。

所以当我们编译项目时,会选择 Version=1.0.0.0 的 this 依赖,这会导致冲突。因此,您可以使用 NuGet 添加指定版本=1.0.1.0 的依赖项“Microsoft.Extensions.DependencyModel”来解决此警告问题。

【讨论】:

  • 然而,当我只引用两个相互冲突的标准包时,真的很难理解为什么。这不是我的依赖,而是它们的内部结构在某种程度上被破坏了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-05
  • 1970-01-01
  • 1970-01-01
  • 2017-10-27
  • 2015-10-25
  • 2014-06-21
  • 2011-08-12
相关资源
最近更新 更多