Pat*_*bee 1 xamarin.ios xamarin.forms azure-devops
我们有一个 Xamarin Forms 项目,它在 VS20198 中构建良好,但 iOS 构建在 Azure DevOps (ADO) 中托管的 mac 上失败
查看 ADO 构建的这个输出
2019-10-15T17:04:27.5851930Z MTOUCH : error MT2001: Could not link assemblies. Reason: Error while processing references of 'ProjectBreatheApp.iOS, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' [/Users/vsts/agent/2.158.0/work/1/s/ProjectBreatheApp/ProjectBreatheApp.iOS/ProjectBreatheApp.iOS.csproj]
2019-10-15T17:04:27.5852990Z --- inner exception
2019-10-15T17:04:27.5899390Z Mono.Linker.LoadException: Error while processing references of 'ProjectBreatheApp.iOS, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' ---> Mono.Linker.LoadException: Error while processing references of 'ProjectBreatheApp.Forms, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' ---> Mono.Linker.LoadException: Error while processing references of 'FreshMvvm, Version=1.0.7010.22624, Culture=neutral, PublicKeyToken=null' ---> Mono.Cecil.AssemblyResolutionException: Failed to resolve assembly: 'System.Threading.Tasks.Extensions, Version=4.2.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' ---> Mono.Cecil.AssemblyResolutionException: Failed to resolve assembly: 'System.Threading.Tasks.Extensions, Version=4.2.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'
2019-10-15T17:04:27.5901640Z at Mono.Cecil.BaseAssemblyResolver.Resolve (Mono.Cecil.AssemblyNameReference name, Mono.Cecil.ReaderParameters parameters) [0x00105] in <c00644197a08419abff2c4cf790b9f65>:0
2019-10-15T17:04:27.5903940Z at Mono.Linker.AssemblyResolver.Resolve (Mono.Cecil.AssemblyNameReference name, Mono.Cecil.ReaderParameters parameters) [0x00071] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/external/mono/external/linker/linker/Linker/AssemblyResolver.cs:80
2019-10-15T17:04:27.5904560Z at Mono.Linker.LinkContext.Resolve (Mono.Cecil.IMetadataScope scope) [0x00009] in /Users/builder/jenkins/workspace/xamarin-macios/xamarin-macios/external/mono/external/linker/linker/Linker/LinkContext.cs:210
2019-10-15T17:04:27.5906030Z --- End of inner exception stack trace ---
Run Code Online (Sandbox Code Playgroud)
我可以看到它无法找到 4.2.0.0 版本的 STTE。那个版本不存在,我不相信它曾经存在过。我如何告诉构建采用不同的版本?
我们没有直接引用 STTE,我们正在使用的库,链接堆栈跟踪中的 FreshMVVM 没有直接引用它,更重要的是,我确实有一个使用 FreshMVVM 的简单 XF 项目的 ADO iOS 构建。
许多其他人在引用 4.2.0.0 STTE 时遇到了问题,他们建议明确引用该文件。我无法让它发挥作用。
我在 System.Threading.Tasks.Extensions 中遇到了类似的问题,我的项目在本地构建得很好,但在 Azure Pipelines 中却没有。
问题是代理“macOS-10.14”默认不使用最新的 Mono 和 Xamarin.iOS SDK。
通过切换到最新的 XCode (11.1),NetCore 2.x、Mono (6.4) 和 Xamarin.iOS SDK 解决了我的问题。
以下是我用来配置管道的任务:
- task: UseDotNet@2
displayName: 'Use .Net Core sdk 2.x'
inputs:
version: 2.x
- bash: |
SYMLINK=6_4_0
MONOPREFIX=/Library/Frameworks/Mono.framework/Versions/$SYMLINK
echo "##vso[task.setvariable variable=DYLD_FALLBACK_LIBRARY_PATH;]$MONOPREFIX/lib:/lib:/usr/lib:$DYLD_LIBRARY_FALLBACK_PATH"
echo "##vso[task.setvariable variable=PKG_CONFIG_PATH;]$MONOPREFIX/lib/pkgconfig:$MONOPREFIX/share/pkgconfig:$PKG_CONFIG_PATH"
echo "##vso[task.setvariable variable=PATH;]$MONOPREFIX/bin:$PATH"
displayName: 'Select Mono Version'
- bash: |
echo "Select Xamarin Version"
/bin/bash -c "sudo $AGENT_HOMEDIRECTORY/scripts/select-xamarin-sdk.sh 6_4_0"
displayName: 'Select Xamarin Version'
- bash: |
echo '##vso[task.setvariable variable=MD_APPLE_SDK_ROOT;]'/Applications/Xcode_11.1.app;sudo xcode-select --switch /Applications/Xcode_11.1.app/Contents/Developer
displayName: 'Select XCode Version'
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
更新
仅供参考,您可以在此处找到 Azure Pipelines 中每个可用映像中安装的内容以及如何根据 MS 文档选择工具
归档时间: |
|
查看次数: |
625 次 |
最近记录: |