我正在使用Visual Studio对我的Mac构建主机构建我的Xamarin.iOS应用程序,并使用PostSharp对输出执行AOP,然后将二进制文件发送到我的Mac构建主机以进行AOT /本机编译。
PostSharp将一些隐藏的实现类型注入到我的应用程序未引用的目标程序集中,因此AOT编译器将它们从生成的二进制文件中删除,因为我正在使用" Link All"选项。
更改"全部链接"选项" Link SDK"或"无"修复了这个问题但产生了一个非常大的二进制文件,所以它不能用于发布应用程序。
由于代码是由工具生成的,我不能直接在代码上使用[Preserve]属性,因为它是内部/私有的,我无法在我的应用程序代码中手动引用它。
根据以下文档,我可以指定一个链接器xml文件来手动指定类型名称:
https://developer.xamarin.com/guides/cross-platform/advanced/custom_linking/
我已成功将此技术用于我的Xamarin.Android应用程序,在Mac上的Xamarin Studio中编译我的Xamarin.iOS应用程序时,我也可以成功使用此技术。
但是,当从Visual Studio 2015编译Xamarin.iOS应用程序时,我无法弄清楚如何实现这一点。虽然我可以在.csproj文件中添加必要的mtouch参数,但我无法弄清楚如何将xml文件传递给Mac在构建过程中构建主机。
答案 0 :(得分:3)
确保链接器XML文件包含在项目文件中,输出类型设置为Copy Always
。
Visual Studio构建将输出目录复制到构建主机,除非项目配置正确,否则它不会复制链接器XML文件。