当我想开始在真实设备上调试应用时,我遇到了一个奇怪的问题。
问题出现在构建声音如下:
" C:\ Program Files (x86)\ MSBuild \ Xamarin \ iOS \ Xamarin.iOS.Common.targets(696,3):错误: 无法解析" System.Threading.Tasks.Task`1 Acr.UserDialogs.IUserDialogs :: ConfirmAsync(System.String,System.String,System.String,System.String)" 参考来自" Acr.UserDialogs.Interface,版本= 1.0.0.0, Culture = neutral,PublicKeyToken = null" 5个5> Build FAILED。"
奇怪的是,如果我只是在模拟器上运行它(不改变任何其他东西),它就可以了。如果我选择"不要链接"项目选项中的选项 - > iOS Build - >链接器选项 - >链接器行为:不要链接它也可以在设备上工作。 我曾尝试使用该软件包的不同版本(Acr.UserDialogs),但没有改变。
为什么会发生这种情况,为了能够在设备上运行带有'链接器行为的应用,我应该怎么做:仅限链接SDK程序集?'
谢谢!
答案 0 :(得分:0)
iOS链接器的主要目标是减小捆绑包的大小。在这样做时,它还将删除未使用的代码,这可能导致许多问题。现在我无法确切地说出你的问题是什么。在我的情况下,例如,构造函数被删除,因为它们无处调用。然而,这不是真的,因为类是使用IoC创建的,因此使用了构造函数,尽管没有直接引用它们。 如果您是有问题的程序集的作者,则可以使用[Preserve]属性标记导致链接器问题的类。这将告诉链接器让这些类安静下来。 如果不是,则可以通过在mtouch参数中提供--linkskip = AssemblyName来排除仅连接prosess的一个程序集是iOS项目属性。