Прекратить сборку в поисках System.Threading.Tasks.Extensions.dll 4.2.0.0 - PullRequest
0 голосов
/ 16 октября 2019

У нас есть проект Xamarin Forms, который прекрасно работает в VS20198, но сборка iOS не удалась на размещенном Mac в Azure DevOps (ADO)

Просмотр этого вывода из сборки 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 ---

Я вижу, что не удается найти версию STTE 4.2.0.0. Этой версии не существует, и я не верю, что она когда-либо существовала. Как я могу сказать сборке взять другую версию?

Мы не имеем прямой ссылки на STTE, библиотека, которую мы используем, FreshMVVM, которая находится в трассировке стека компоновки, не ссылается на нее напрямую, и что более важно, у меня естьрабочая сборка ADO iOS для простого XF-проекта, использующего этот FreshMVVM.

У многих других людей возникли проблемы со ссылкой на 4.2.0.0 STTE, они предложили явную ссылку на файл. Я не мог заставить это работать.

1 Ответ

1 голос
/ 18 октября 2019

У меня была похожая проблема с System.Threading.Tasks.Extensions, где мой проект работал нормально локально, но не в конвейерах Azure.

Проблема в том, что агент "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'

Надеюсь, это поможет!

ОБНОВЛЕНИЕ

Только дляздесь вы можете найти информацию о том, что установлено в каждом образе, доступном в конвейерах Azure, и как выбрать инструменты в соответствии с документами MS

Создание изображений конвейеров Azure

Какможно вручную выбрать версии инструментов в агенте MacOS на хостинге?

...