【问题标题】:Resources for an external bundle not recognized in Xamarin.iOS projectXamarin.iOS 项目中无法识别的外部捆绑资源
【发布时间】:2017-10-28 15:08:57
【问题描述】:

我正在使用一个带有外部资源包的 iOS 框架(该框架使用位于包内不同文件夹中的一些资源)。如果框架和包都集成在 Xcode 项目中(我通常将包放在 Resources 文件夹中),则一切正常。

在这里你可以看到运行时的包路径(在 Xcode 中):@"/var/containers/Bundle/Application/44691B5C-73D0-4B28-B88F-14ECB52AFC5F/DemoProject.app/FRAMEWORK_BUNDLE.bundle"

另一方面,我尝试将相同的框架集成到 Xamarin iOS 项目中。 首先,我创建了一个 iOS 绑定项目,并将 Objective-C 框架添加为 Native Reference。外部包已添加到 Resources 文件夹下的 iOS 绑定项目中。 ApiDefinition.csStructs.cs 文件也已成功配置。我已经编译了项目,并且得到了 .dll 文件。

我已将 .dll 文件集成到 References 文件夹下的 Xamarin iOS 项目中。当我尝试运行该项目时,它失败了,因为外部包中的资源不可见(框架配置为在找不到外部资源时抛出异常)。

我错过了什么吗?我应该在 Xamarin iOS 项目中添加外部包并将其与项目链接吗?

谢谢!

【问题讨论】:

    标签: xcode xamarin mobile xamarin.ios resourcebundle


    【解决方案1】:

    确保文件标记为BuildAction = BundleResource。正如文档Resources in Binding Projects 所说:

    在绑定项目中标记为 BundleResource 的文件将嵌入到绑定程序集中,并在被 Xamarin.iOS 应用程序项目引用时提取到正确的位置。

    根据How to write bindings for a framework?

    您可以将这些文件添加到绑定项目或应用程序项目中,这并不重要。

    将 Bundle 文件添加到 Xamarin iOS 项目的 Resource 文件夹是另一种选择。你可以试一试。

    其他一些参考资料:

    How to add a external Resource Bundle into the app

    Embedding ObjectivC BindingLibrary with Bundle Resources

    【讨论】:

    • 感谢您的回答,凯文。我已在我的 iOS 绑定项目中将外部包中的所有文件标记为 BundleResource。问题是这些资源在我的 Xamarin iOS 项目(单视图应用程序)中不可见,即使我将它们添加到项目中(我试图将它们标记为 BundleResource / Content)。
    • 你能通过代码从应用项目而不是从库中获取资源吗?
    猜你喜欢
    • 2017-03-26
    • 2013-08-27
    • 1970-01-01
    • 1970-01-01
    • 2017-08-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 2020-12-10
    相关资源
    最近更新 更多