停止构建寻找 System.Threading.Tasks.Extensions.dll 4.2.0.0

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 时遇到了问题,他们建议明确引用该文件。我无法让它发挥作用。

Jor*_*noa 5

我在 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 文档选择工具

Azure 管道图像生成

如何在托管 macOS 代理上手动选择工具版本?