You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio 15.7.2更新致Xamarin Android项目编译失败

解决Visual Studio更新后Xamarin Android Release构建失败的问题

先把报错信息贴出来,方便大家快速定位问题:

1>Foobar.Android -> C:\Apps\foobar-telerik-mobile-app\foobar\Android\bin\Release\foobar.Android.dll

1>No way to resolve conflict between "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" and "mscorlib, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e". Choosing "mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" arbitrarily.

1>The "LinkAssemblies" task failed unexpectedly.

1>Mono.Linker.MarkException: Error processing method: 'System.Void Telerik.XamarinForms.DataGrid.RadDataGridResourceDictionary::InitializeComponent()' in assembly: 'Telerik.XamarinForms.DataGrid.dll' ---> Mono.Cecil.ResolutionException: Failed to resolve System.Func`2 Xamarin.Forms.Internals.ResourceLoader::get_ResourceProvider()

开启「Use Shared Runtime」能构建但没法用于发布,确实只是临时的测试方案,下面给几个实际可行的解决思路:

1. 优先更新/适配Telerik组件版本

这个报错直接指向Telerik的DataGrid组件,大概率是更新VS后Xamarin环境升级,导致旧版Telerik组件出现兼容性问题:

  • 打开NuGet包管理器,找到Telerik.XamarinForms.DataGrid,直接更新到最新稳定版——官方一般会及时适配最新的Xamarin.Forms/VS版本。
  • 如果更新后仍有问题,试试回退到之前能正常构建的Telerik版本,同时确认该版本和当前VS/Xamarin环境的兼容性(可以参考Telerik官方的兼容性文档)。

2. 调整链接器配置解决LinkAssemblies失败

LinkAssemblies报错是因为Mono链接器在优化时误删了必要的依赖方法,你可以这样调整:

  • 先临时测试:在Android项目属性的「Android Options」->「Linker」里,把链接方式改成None,如果能正常构建,说明是链接器的优化规则导致的问题。后续可以用自定义链接器文件精准保留代码,避免APK体积过大。
  • 添加自定义链接器描述文件Linker.xml,内容如下:
    <linker>
      <assembly fullname="Telerik.XamarinForms.DataGrid">
        <type fullname="Telerik.XamarinForms.DataGrid.RadDataGridResourceDictionary" preserve="all"/>
      </assembly>
      <assembly fullname="Xamarin.Forms.Core">
        <type fullname="Xamarin.Forms.Internals.ResourceLoader" preserve="all"/>
      </assembly>
    </linker>
    
    把这个文件添加到Android项目中,设置「生成操作」为LinkDescription,这样链接器就会保留这些必要的类型和方法。

3. 修复mscorlib版本冲突

版本冲突通常是编译缓存或者依赖版本不统一导致的:

  • 先清理整个解决方案,手动删除所有项目的bin和obj文件夹,然后重新生成——很多时候旧缓存会引发这类版本冲突问题。
  • 检查Android项目的目标框架:右键项目->「属性」->「应用程序」,确认目标框架是最新的Android API级别(比如Android 13/14),同时确保.NET标准库的引用配置正确。
  • 还可以在Android项目的.csproj文件里添加自动绑定重定向配置,让系统自动处理版本冲突:
    <PropertyGroup>
      <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
      <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
    </PropertyGroup>
    

4. 验证Xamarin.Forms版本兼容性

更新VS时,Xamarin.Forms可能被自动更新,导致和Telerik组件版本不匹配:

  • 查看当前Xamarin.Forms的版本,对照Telerik官方给出的兼容性矩阵,确保两者版本适配。
  • 如果Xamarin.Forms是最新版但Telerik还未适配,试试回退Xamarin.Forms到之前稳定的版本,再尝试构建Release包。

内容的提问来源于stack exchange,提问作者Gerry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:53:37