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

已添加System.Xml引用仍报错?Xamarin项目PackageManager开发求助

解决Xamarin重写PackageManager.GetXml时的System.Xml引用错误

快速解决办法

方法一:直接使用系统PackageManager(推荐)

你完全不需要手动实例化并重写PackageManager抽象类,这是多余的操作。Android系统已经提供了现成的PackageManager实例,直接在Android项目中调用即可:

修改MyApp.Android\Services\HelperService.cs里的PM方法:

public IList<ApplicationInfo> PM()
{
    // 获取系统自带的PackageManager实例
    var systemPm = Android.App.Application.Context.PackageManager;
    // 获取所有已安装应用信息
    return systemPm.GetInstalledApplications(PackageInfoFlags.MatchAll);
}

这样既不用处理GetXml的重写问题,代码更简洁,完全能满足你检查第三方应用是否安装的需求。

方法二:修复System.Xml引用冲突(若坚持重写PackageManager)

如果一定要自行实现PackageManager,需要显式添加指定版本的System.Xml引用:
在你的netstandard项目的csproj文件中,添加以下节点:

<ItemGroup>
  <Reference Include="System.Xml, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e">
    <HintPath>C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v12.0\System.Xml.dll</HintPath>
  </Reference>
</ItemGroup>

添加后执行以下步骤:

  • 清理整个解决方案
  • 删除所有项目的bin和obj文件夹
  • 重新生成解决方案

错误原因

报错要求的是Mono Android专用的System.Xml 2.0.5.0版本,而你当前项目引用的可能是netstandard通用版本,两者存在程序集绑定冲突,因此即使已添加System.Xml引用,仍会触发错误。显式指定版本可解决冲突,但显然方法一更高效。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 08:36:01