【问题标题】:How can I specify a custom linker configuration for Xamarin.iOS when building from Visual Studio 2015?从 Visual Studio 2015 构建时,如何为 Xamarin.iOS 指定自定义链接器配置?
【发布时间】:2018-11-16 12:01:14
【问题描述】:

我正在针对我的 Mac 构建主机从 Visual Studio 构建我的 Xamarin.iOS 应用,并使用 PostSharp 对输出执行 AOP,然后将二进制文件发送到我的 Mac 构建主机以进行 AOT/本机编译。

PostSharp 将一些隐藏的实现类型注入到我的应用程序未引用的目标程序集中,因此 AOT 编译器将它们从生成的二进制文件中删除,因为我使用的是“链接全部”选项。

将“Link All”选项更改为“Link SDK”或“None”可以解决问题,但会产生非常大的二进制文件,因此无法用于发布应用程序。

由于代码是由工具生成的,我不能直接在代码上使用 [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 构建主机。

【问题讨论】:

  • 链接器 XML 是否被复制到构建主机?您应该在构建输出中看到它。要检查的一件事是在项目中以正确的类型引用了该文件。我遇到了未将未引用的资产复制到 mac 构建主机的问题。它们在 Xamarin Studio 中运行良好,因为它们不需要被引用来工作,而是将 Visual Studio 与它们丢失的远程主机一起使用。

标签: xamarin visual-studio-2015 xamarin.ios


【解决方案1】:

确保链接器 XML 文件包含在您的项目文件中,并且输出类型设置为 Copy Always

Visual Studio 构建将输出目录复制到构建主机,除非项目配置正确,否则它不会复制您的链接器 XML 文件。

【讨论】:

    猜你喜欢
    • 2016-03-26
    • 2015-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-11
    • 1970-01-01
    相关资源
    最近更新 更多