在尝试构建我们的应用程序时,AzureDevops托管的构建服务器当前存在问题。
这是我们得到的以下错误:
MTOUCH:错误MT2101:无法解析引用'System.Void ObjCRuntime.Runtime :: ReleaseBlockOnMainThread(System.IntPtr)', 从方法'System.Void中引用 ObjCRuntime.Trampolines / NIDCompletionHandler :: Finalize()中的 'Xamarin.iOS,版本= 0.0.0.0,文化=中性, PublicKeyToken = 84e04ff9cfb79065'。 [/Users/vsts/agent/2.155.1/work/4/s/Smartphone /......]
我们确定这是与构建服务器使用的Xamarin.iOS SDK版本有关的问题。在Xamarin.iOS SDK 12.14.0.114上本地运行时,构建可以正常完成。
是否始终指定AzureDevOps服务器使用哪个版本?我知道您可以使用类似:
/bin/bash -c "sudo $AGENT_HOMEDIRECTORY/scripts/select-xamarin-sdk.sh 5_18_1"
/bin/bash -c "echo '##vso[task.setvariable variable=MD_APPLE_SDK_ROOT;]'/Applications/Xcode_10.1.app;sudo xcode-select --switch /Applications/Xcode_10.1.app/Contents/Developer"
为了更改Mono版本。我们真正需要的是一种选择iOS SDK版本的方法。
答案 0 :(得分:0)
您可以使用Boots工具安装更新的iOS SDK版本。
只需安装它,将步骤添加到您的管道中,然后放入所需的安装程序uri。
下载uri为https://dl.xamarin.com/MonoTouch/Mac/xamarin.ios-13.8.2.2.pkg(显然可以切换到所需的Xamarin.iOS版本)。
答案 1 :(得分:0)
通过上面的Bash脚本(select-xamarin-sdk.sh
)选择Mono版本,您还可以设置相应的Xamarin.iOS SDK版本。如果使用最新的Mono版本(在撰写本文时为6.8.0),请同时设置最新的Xamarin.iOS SDK版本。
有关此问题,请参见James Montemagno's blog entry。