【问题标题】:Visual Studio Android solution stops building upon hitting C# version conflict when using MSBuild使用 MSBuild 时,Visual Studio Android 解决方案在遇到 C# 版本冲突时停止构建
【发布时间】:2018-09-14 18:03:08
【问题描述】:

该解决方案在 Visual Studio 2017 中构建良好。

MSBuild 将产生以下警告:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets (2106, 5):警告 MSB3277:发现不同版本的“Microsoft .CSharp”,无法解决。当日志详细程度设置为详细时,这些引用冲突会列在构建日志中。

警告后会显示几行,但从那里停止并且根本没有进展。

实际的引用冲突在这里:

“Microsoft.CSharp, Version=2.0.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”和“Microsoft.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”之间存在冲突。 (任务 ID:123) 4> 选择“Microsoft.CSharp, Version=2.0.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”是因为它是主要的,而“Microsoft.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”不是。 (任务 ID:123) 4> 依赖于“Microsoft.CSharp, Version=2.0.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”的引用 [C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\ReferenceAssemblies\Microsoft \Framework\MonoAndroid\v1.0\Microsoft.CSharp.dll]。 (任务 ID:123) 4> C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v1.0\Microsoft.CSharp.dll (TaskId:123) 4> 项目文件项包括导致引用“C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v1.0\Microsoft.CSharp.dll”。 (任务 ID:123) 4> Microsoft.CSharp (TaskId:123) 4> 依赖于 "Microsoft.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" [] 的引用。 (任务 ID:123) 4> C:\Users\laniganr.nuget\packages\newtonsoft.json\10.0.3\lib\netstandard1.3\Newtonsoft.Json.dll (TaskId:123)

其他几行将在错误之后立即显示,但永远不会超过这一点。

说句:

_XamarinAndroidBuildAarRestore: 引用已合并资源,由于以下原因而跳过:obj\ReleaseNuget\XbdMerge\Xamarin.GooglePlayServices.Bas ement.dll.stamp 引用已合并资源,由于以下原因而跳过:obj\ReleaseNuget\XbdMerge\Xamarin.GooglePlayServices.Tas ks.dll.stamp 参考已合并资源,跳过原因:obj\ReleaseNuget\XbdMerge\Xamarin.Firebase.Common.dll.st 放大器 参考已合并资源,跳过原因:obj\ReleaseNuget\XbdMerge\Xamarin.Firebase.Iid.dll.stamp 参考已合并资源,跳过原因:obj\ReleaseNuget\XbdMerge\Xamarin.Firebase.Messaging.dll 。邮票 _ResolveLibraryProjectImports: 跳过目标“_ResolveLibraryProjectImports”,因为所有输出文件相对于输入文件都是最新的 . _BuildLibraryImportsCache: 跳过目标“_BuildLibraryImportsCache”,因为所有输出文件相对于输入文件都是最新的。

【问题讨论】:

  • 这个问题有什么更新吗?你解决了这个问题吗?如果没有,请告诉我有关此问题的最新信息吗?

标签: c# visual-studio msbuild visual-studio-2017


【解决方案1】:

Visual Studio Android 解决方案在使用 MSBuild 时遇到 C# 版本冲突时停止构建

这是因为在 netstandard 库项目中从库 newtonsoft.json 10.0.3 中引用 Microsoft.CSharp 4.3.0.0 时,在 Xamarin.Android 项目中存在对 Microsoft.CSharp 2.0.5.0 的显式引用。

在构建日志中,您可以在以下消息中找到引用包 newtonsoft.json 的项目:

C:\Users\xxxxx\packages\newtonsoft.json\10.0.3\lib\netstandard1.3\Newtonsoft.Json.dll (TaskId:123)

然后检查包newtonsoft.json\10.0.3\lib\netstandard1.3的依赖:

要解决此问题,您可以尝试将Newtonsoft.Json 更新到11.0.1 及更高版本。这是因为netstandard 2.0 的这个版本的Newtonsoft.Json 包不依赖于Microsoft.CSharp

或者,您可以删除 Microsoft.CSharp 2.0.5 并允许使用 Nuget 中的那个。

您可以参考类似的线程herehere了解更多详细信息。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2015-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    • 2014-04-27
    相关资源
    最近更新 更多