Mac端Visual Studio打包Xamarin.iOS应用出现Microsoft.CSharp版本冲突错误
解决方案
这是Microsoft.CSharp程序集版本冲突导致的报错:Xamarin.iOS 框架自带2.0.5.0版本的Microsoft.CSharp,而你的共享.NET Standard项目依赖4.0.0.0版本,升级Xamarin.Forms后MSBuild的引用检查严格度提升,原本的警告升级为阻断归档的错误,可按以下步骤逐一排查解决:
- 移除额外安装的
Microsoft.CSharpNuGet包
检查共享项目、iOS项目的NuGet引用列表,删除所有手动安装的Microsoft.CSharp包,Xamarin.iOS 运行时已自带该程序集,无需额外引入。 - 添加程序集绑定重定向
在iOS项目根目录新建App.config文件(已存在则直接编辑),添加以下配置:<configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Microsoft.CSharp" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="2.0.5.0" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration> - 清理项目和NuGet缓存
关闭Visual Studio,删除所有项目(共享项目、iOS项目)下的bin、obj文件夹,打开终端执行以下命令清理NuGet全局缓存:
再删除dotnet nuget locals all --clear~/Library/Caches/VisualStudio/路径下对应版本的缓存文件夹,重启Visual Studio后还原所有NuGet包。 - 执行干净生成后再归档
选中iOS项目为启动项目,右键选择「清理」,清理完成后执行「生成」,确认生成无报错后再执行发布归档操作。
内容的提问来源于stack exchange,提问作者Dan
相关产品推荐
相关产品推荐

