我正在尝试将我的代码推送到苹果。我正在验证Xcode中的代码。 我正在关注这篇文章: http://developer.xamarin.com/guides/ios/deployment,_testing,_and_metrics/app_distribution_overview/publishing_to_the_app_store/
但我收到一条错误消息“应用程序引用非公共选择器/ myproject / path:artwork,command,finished,initWithSendPort
我读过有人说要在xcode中运行命令行工具对抗dll来找到像这样的罪魁祸首:
strings /path/to/dllfolder.dll | grep artwork
但我的应用程序中没有任何dll。在Xamarin中对我的配置进行构建后,接收文件夹只有myapp,myapp.dsym,myapp.exe,我的app.xcent和资源文件夹为空。
我被困住了。我该怎么办?
解决方案:
@Rolf,我会将你的答案标记为解决方案,因为它的一部分就是我为解决问题所做的工作。我下载了最新的Xamarin更新,版本3.0,然后“链接所有程序集”,它立即工作。
答案 0 :(得分:0)
将此选项用于字符串:
''' -一个 - 所有 - 不要仅扫描对象的初始化和加载部分 文件;扫描整个文件。 '''
http://www.freebsd.org/cgi/man.cgi?query=strings&sektion=1&n=1
答案 1 :(得分:0)
这些选择器很可能出现在monotouch.dll中。然而,大多数这些选择器实际上是公开记录的[1],那些未被删除的(从你的列表中我相信initWithSendPort:receivePort:components
是唯一的一个)来自未来版本的Xamarin.iOS。
当前的解决方法是在项目的iOS构建选项中启用托管链接器(设置"链接器行为"到"链接所有程序集"或"链接仅限SDK程序集")。这将删除monotouch.dll中未使用的代码,除非您实际使用相关API,否则将删除这些选择器的使用。
[1] http://forums.xamarin.com/discussion/comment/59264/#Comment_59264