Xamarin iOS Release构建失败求助(VS2017 Windows环境)
针对Windows VS2017 Xamarin iOS Release构建sgen.exe错误的解决方案
我之前在Windows环境下用VS2017做Xamarin iOS开发时,也碰到过一模一样的sgen.exe报错问题——Debug版本跑起来一切正常,一搞Release就卡壳,给你几个亲测有效的解决思路:
直接禁用XML序列化生成
右键你的iOS项目 → 属性 → 生成标签页,找到“XML序列化生成”选项,把它改成“关”。sgen.exe就是负责生成XML序列化程序集的工具,Release构建时它经常因为某些复杂类型的序列化逻辑翻车,直接禁用这个功能就能绕开这个错误,对大多数应用来说不会有功能影响。彻底清理构建缓存后重建
先点VS菜单里的「生成」→「清理解决方案」,然后手动删掉项目目录下的bin和obj文件夹(这俩文件夹里的缓存经常搞事情),最后重新构建Release版本。很多时候奇怪的构建错误都是缓存残留导致的,清理完就能正常编译。排查项目中的序列化类问题
sgen.exe报错本质是XML序列化逻辑出问题了,你可以检查项目里标记了[Serializable]或者参与XML序列化的类:- 确保这些类的所有公共属性都有公共的getter和setter
- 尽量避免用嵌套过深的泛型类型,如果必须用,可能得自己写自定义序列化逻辑
- 检查有没有循环引用的类结构,这种情况会直接让sgen.exe崩溃
手动修改项目文件跳过sgen步骤
如果上面的方法都不管用,直接改项目文件强制跳过sgen:- 右键项目 → 卸载项目
- 点击编辑项目文件(.csproj)
- 在
<PropertyGroup>节点里加一行:<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies> - 保存后重新加载项目,再试Release构建
更新Xamarin.iOS组件
打开VS2017的「工具」→「选项」→「Xamarin」→「iOS设置」,看看有没有可用的Xamarin.iOS更新。旧版本的Xamarin组件在Windows环境下的Release构建经常有兼容性bug,更到最新的兼容版本说不定就能解决问题。
内容的提问来源于stack exchange,提问作者M.D.
相关产品推荐
相关产品推荐

