![](/img/trans.png)
[英]C# version error when building with msbuild, ok with Visual Studio
[英]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.0
的Newtonsoft.Json
程序包不依赖于Microsoft.CSharp
。
或者,您可以删除Microsoft.CSharp 2.0.5
并允许使用Nuget中的一个。
希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.