两个引用程序集之间的冲突

Conflict between two referenced assemblies

我正在玩 .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.0.0-preview-20161123-03\lib\netstandard1.5".
2>            Considered "C:\Users\Alex\.nuget\packages\microsoft.testplatform.testhost.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.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.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.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.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.0.0-preview-20161123-03\lib\netstandard1.5\testhost.dll".
2>        Required by "C:\Users\Alex\.nuget\packages\microsoft.testplatform.testhost.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.0.0\lib\netstandard1.6\Microsoft.Extensions.DependencyModel.dll].
2>            C:\Users\Alex\.nuget\packages\microsoft.extensions.dependencymodel.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.0.0\lib\netstandard1.6\Microsoft.Extensions.DependencyModel.dll".
2>                C:\Users\Alex\.nuget\packages\microsoft.extensions.dependencymodel.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.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.0.0-preview-20161123-03\lib\netstandard1.5\Microsoft.TestPlatform.CrossPlatEngine.dll".
2>                C:\Users\Alex\.nuget\packages\microsoft.testplatform.testhost.0.0-preview-20161123-03\lib\netstandard1.5\testhost.dll
2>                C:\Users\Alex\.nuget\packages\microsoft.testplatform.testhost.0.0-preview-20161123-03\lib\netstandard1.5\Microsoft.TestPlatform.CrossPlatEngine.dll
2>    C:\Program Files (x86)\Microsoft Visual Studio17\Enterprise\MSBuild.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...。我不知道如何绕过这个警告,因为我只是使用 .Net standard 1.1System.Reflection.EmitNuGet 并且没有引用任何其他内容。

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

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

所以我们在编译工程的时候,会选择Version=1.0.0.0的this依赖,这样就会造成那个冲突。因此,您可以使用 NuGet 添加依赖项“Microsoft.Extensions.DependencyModel”并指定版本号=1.0.1.0 来解决此警告问题。