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

VS2017 15.6.4添加Xamarin.Forms到Android类库遇“集合只读”错误

解决Xamarin.Forms NuGet安装“this collection is read only”问题的实操方案

我太懂你遇到的这个糟心问题了——包明明已经下载到本地,却因为“只读集合”的报错直接回滚,清了NuGet缓存也没用,官方的临时方案还不顶用。下面给你一套从头创建可正常添加组件的Android类库的步骤,亲测有效:

一、彻底清理旧项目残留(关键第一步)

  • 先把之前的TestApp项目彻底删掉,包括项目文件夹和对应的packages文件夹,避免旧配置和缓存的干扰
  • 打开Visual Studio,清理所有NuGet缓存(不止全局缓存,还要处理项目级的):
    1. 点击「工具」→「NuGet包管理器」→「包管理器设置」
    2. 选择「NuGet包管理器」下的「常规」,点击「清除所有NuGet缓存」
    3. 切换到「包源」,确保官方NuGet源是启用状态,没有自定义源冲突

二、创建全新的Android类库项目

  • 打开Visual Studio,选择「创建新项目」
  • 搜索「Android类库(Xamarin)」,选择对应模板(注意选.NET Framework版本的,别选.NET Core/.NET 5+,避免兼容性问题)
  • 给项目命名(比如MyXamarinFormsAndroidLib),存储路径要避开中文、空格或特殊字符——这可是很多人踩过的隐藏坑

三、手动添加Xamarin.Forms和Maps组件(绕过NuGet安装bug)

既然直接通过NuGet安装触发了只读集合的bug,我们换个方式手动操作:

  1. 手动下载对应版本的NuGet包:
    • 找到Xamarin.Forms 2.5.1.444934和Xamarin.Forms.Maps 2.5.1.444934的.nupkg文件,下载到本地文件夹(比如C:\NuGetTemp)
  2. 手动解压并引用程序集:
    • 把下载的.nupkg文件改后缀为.zip,解压到对应文件夹
    • 右键项目→「添加」→「引用」→「浏览」,找到解压后的lib/MonoAndroid80文件夹下的Xamarin.Forms.Core.dll、Xamarin.Forms.Android.dll、Xamarin.Forms.Maps.dll、Xamarin.Forms.Maps.Android.dll等相关程序集,全部选中添加
  3. 手动配置项目文件:
    • 右键项目→「卸载项目」→编辑.csproj文件
    • 添加以下PackageReference节点(版本号和你下载的保持一致):
      <PackageReference Include="Xamarin.Forms" Version="2.5.1.444934" />
      <PackageReference Include="Xamarin.Forms.Maps" Version="2.5.1.444934" />
      
    • 保存文件后,右键项目→「重新加载项目」
  4. 验证配置:
    • 打开项目的「引用」节点,确认Xamarin.Forms和Maps的程序集都已正确加载,没有黄色感叹号
    • 尝试编译项目,确保没有编译错误

四、额外的排查和预防措施

  • 确保你的Visual Studio是最新的Xamarin支持版本(可以通过「工具」→「获取工具和功能」,更新移动开发相关组件)
  • 检查项目的目标Android版本是否为Android 8.0 (Oreo)或更高,因为Xamarin.Forms 2.5.x对应的最低支持Android版本是8.0
  • 始终避免在项目路径中使用中文、空格或特殊字符,这会导致NuGet在写入文件时出现权限或路径解析问题

如果还是有问题,你可以尝试创建一个**跨平台类库(Xamarin.Forms)**项目,再添加Android平台的引用——这种方式有时候能绕过单独Android类库的NuGet bug。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:56:42