在Visual Studio Mac编译Xamarin.iOS应用时遇两项错误求助
这是典型的NuGet包版本兼容性问题,结合你的环境信息(VS Mac 8.4.3、Xamarin.Forms 4.4.0.991640),我整理了亲测有效的解决步骤:
1. 升级Xamarin.Build.Download到兼容版本
你的项目使用的Xamarin.Build.Download.0.9.0版本太旧,它的XamarinDownloadArchives任务并没有定义AllowUnsecureUrls这个参数,而当前VS Mac的MSBuild环境会尝试传递这个参数,直接导致构建失败。
- 打开VS Mac的NuGet包管理器,找到
Xamarin.Build.Download包 - 将其升级到0.11.0及以上版本(这个版本修复了参数匹配问题,完美适配Xamarin.Forms 4.4.x系列)
- 如果升级过程中出现冲突,先卸载旧的0.9.0版本,再重新安装最新稳定版
2. 彻底清理并重建项目
旧的构建缓存很容易导致更新后的包不生效,务必执行以下操作:
- 点击VS Mac顶部菜单栏的
Build→Clean Solution - 手动删除项目目录下的
obj和bin文件夹(这两个文件夹是构建生成的临时文件,删除后不会影响项目) - 再次点击
Build→Rebuild Solution,让项目使用新的NuGet包配置重新构建
3. 检查并修正项目配置(可选)
如果升级后仍有问题,需要检查项目的.csproj文件:
- 用文本编辑器打开项目的
.csproj文件 - 查找是否存在手动添加的
<AllowUnsecureUrls>参数配置,如果有,暂时注释掉或者删除(新版本的任务已经默认处理了非安全URL的相关逻辑,无需手动配置) - 确保项目中Xamarin.Forms和Xamarin.Build.Download的版本没有冲突,Xamarin.Forms 4.4.x建议搭配0.10.x及以上的Xamarin.Build.Download
4. 验证VS Mac环境组件(可选)
虽然你使用的是VS Mac 8.4.3版本,但可以检查是否有可用的更新补丁:
- 打开VS Mac的
Visual Studio→Check for Updates - 安装所有可用的MSBuild和Xamarin相关组件更新,确保构建环境的组件版本和NuGet包匹配
错误原因补充
你遇到的两个错误本质是:
packages/Xamarin.Build.Download.0.9.0/build/Xamarin.Build.Download.targets(3,3): 错误MSB4063: 无法使用输入参数初始化"XamarinDownloadArchives"任务。(MSB4063)
packages/Xamarin.Build.Download.0.9.0/build/Xamarin.Build.Download.targets(4,4): 错误MSB4064: "XamarinDownloadArchives"任务不支持"AllowUnsecureUrls"参数,请验证该参数是否存在且为可设置的公共实例属性。(MSB4064)
旧版本的Xamarin.Build.Download任务没有实现AllowUnsecureUrls这个公共属性,而VS Mac 8.4.3的MSBuild在构建时会自动传递这个参数,导致任务初始化失败。升级到兼容版本就能彻底解决这个参数不匹配的问题。
内容的提问来源于stack exchange,提问作者deep sinha

