Ubuntu编译Xamarin遗留移动应用遇错,能否通过MacInCloud完成编译?
解决遗留移动应用编译问题:Ubuntu vs MacInCloud方案
Ubuntu 编译的可行方法
针对你遇到的MSB3644错误(缺少.NETPortable Profile111引用集),可以尝试以下几种方案:
安装完整Mono开发套件
先确保你的Ubuntu上安装了完整的Mono开发组件,执行以下命令:sudo apt-get update && sudo apt-get install mono-complete mono-devel这会安装Mono的所有核心工具和框架支持,部分情况下能自动补全缺失的Portable Profile依赖。
手动部署Profile111文件
如果安装完整套件后仍报错,可以手动添加Profile111的框架文件:- 从Windows系统的
.NET Framework安装目录(通常在C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETPortable\v4.5\Profile\Profile111)复制所有文件。 - 在Ubuntu上创建对应目录:
sudo mkdir -p /usr/lib/mono/xbuild-frameworks/.NETPortable/v4.5/Profile/Profile111 - 将复制的文件(包括
RedistList目录)粘贴到该路径,确保权限正确。
- 从Windows系统的
修改项目目标框架
如果不需要兼容旧的Portable Profile,可以直接调整项目的目标框架:- 打开项目的
.csproj文件 - 找到
<TargetFrameworkProfile>Profile111</TargetFrameworkProfile>一行,将其替换为Mono支持的Profile(比如Profile78),或者直接改为使用.NET Framework 4.6+:<TargetFrameworkVersion>v4.6</TargetFrameworkVersion> <!-- 移除原有的TargetFrameworkProfile行 --> - 保存后重新加载项目编译。
- 打开项目的
升级到最新Mono版本
旧版Mono对Portable Profiles的支持不完善,建议添加Mono官方源升级:sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF echo "deb https://download.mono-project.com/repo/ubuntu stable-focal main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list sudo apt-get update && sudo apt-get upgrade mono-complete
MacInCloud 编译是否更简便?
是的,Mac环境会省心很多,原因如下:
- 原生支持Xamarin/iOS开发:iOS编译必须依赖Xcode,MacInCloud通常预装了最新的Xcode和Xamarin Studio(或Visual Studio for Mac),无需额外配置核心工具。
- 完善的.NET Portable Profile支持:Mac上的Xamarin环境默认包含了常见的Portable Profiles(包括Profile111),不会出现Ubuntu上的缺失引用问题。
- 调试更顺畅:如果需要调试iOS应用,Mac是唯一的合法环境;调试Android应用时,Mac的模拟器或真机调试支持也比Ubuntu更稳定。
- 操作流程简单:登录MacInCloud后,直接导入项目、修改API地址,选择Android/iOS目标平台即可一键编译运行,几乎不需要额外折腾依赖。
内容的提问来源于stack exchange,提问作者JakubK
相关产品推荐
相关产品推荐

