繁体   English   中英

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

[英]Visual Studio Android solution stops building upon hitting C# version conflict when using MSBuild

该解决方案在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,版本= 2.0.5.0,文化=中性,PublicKeyToken = b03f5f7f11d50a3a”和“ Microsoft.CSharp,版本= 4.0.0.0,文化=中性,PublicKeyToken = b03f5f7f11d50a3a”之间存在冲突。 (TaskId:123)4>选择“ Microsoft.CSharp,版本= 2.0.5.0,文化=中性,PublicKeyToken = b03f5f7f11d50a3a”,因为它是主要的,并且选择了“ Microsoft.CSharp,版本= 4.0.0.0,文化=中性,PublicKeyToken = b03f5f7f11d50a3a”不是。 (TaskId:123)4>引用取决于“ Microsoft.CSharp,版本= 2.0.5.0,区域性=中性,PublicKeyToken = b03f5f7f11d50a3a” [C:\\ Program Files(x86)\\ Microsoft Visual Studio \\ 2017 \\ Professional \\ Common7 \\ IDE \\ ReferenceAssemblies \\微软\\框架\\ MonoAndroid \\ 1.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(TaskId: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> Microsoft.CSharp(TaskId:123)4>依赖于“ Microsoft.CSharp,版本= 4.0.0.0,区域性=中性,PublicKeyToken = b03f5f7f11d50a3a” []的引用。 (任务编号:123)4> C:\\ Users \\ laniganr.nuget \\ packages \\ newtonsoft.json \\ 10.0.3 \\ lib \\ netstandard1.3 \\ Newtonsoft.Json.dll(任务编号: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 amp参考已经被合并了资源,由于以下原因而被跳过:obj \\ ReleaseNuget \\ XbdMerge \\ Xamarin.Firebase.Iid.dll.stamp参考已经合并了资源,由于以下原因而被跳过:obj \\ ReleaseNuget \\ XbdMerge \\ Xamarin.Firebase.Messaging.dll .stamp _ResolveLibraryProjectImports:跳过目标“ _ResolveLibraryProjectImports”,因为所有输出文件都是最新的输入文件的日期。 _BuildLibraryImportsCache:跳过目标“ _BuildLibraryImportsCache”,因为所有输出文件都相对于输入文件而言是最新的。

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

那是因为当从库newtonsoft.json 10.0.3引用netstandard库项目中的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.0Newtonsoft.Json程序包不依赖于Microsoft.CSharp

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

您可以在此处此处引用类似的线程以获取更多详细信息。

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM