Невозможно построить проект Xamarin Android в Azure конвейерах - PullRequest
3 голосов
/ 15 января 2020

Я пытаюсь создать базовый c конвейер сборки в Azure DevOps, который создает решение Visual Studio, включающее. NET Core /. NET Стандартные проекты и проект Xamarin. Android. Решение компилируется локально в VS 2019 без проблем, но всегда вызывает сбой на агенте компоновки со следующими ошибками компоновки:

Error APT2260: resource style/Theme.AppCompat.Light.Dialog (aka com.companyname.obrien.connect.forms:style/Theme.AppCompat.Light.Dialog) not found.

Source\Obrien.Connect.Forms.Android\Resources\values\styles.xml(4,0): Error APT2260: style attribute 'attr/colorAccent (aka com.companyname.obrien.connect.forms:attr/colorAccent)' not found.

Error APT2260: resource style/Theme.AppCompat.Light.DarkActionBar (aka com.companyname.obrien.connect.forms:style/Theme.AppCompat.Light.DarkActionBar) not found.

Source\Obrien.Connect.Forms.Android\Resources\values\styles.xml(2,0): Error APT2260: style attribute 'attr/windowNoTitle (aka com.companyname.obrien.connect.forms:attr/windowNoTitle)' not found.

Source\Obrien.Connect.Forms.Android\Resources\values\styles.xml(2,0): Error APT2260: style attribute 'attr/windowActionBar (aka com.companyname.obrien.connect.forms:attr/windowActionBar)' not found.

Source\Obrien.Connect.Forms.Android\Resources\values\styles.xml(2,0): Error APT2260: style attribute 'attr/colorPrimary (aka com.companyname.obrien.connect.forms:attr/colorPrimary)' not found.

Source\Obrien.Connect.Forms.Android\Resources\values\styles.xml(2,0): Error APT2260: style attribute 'attr/colorPrimaryDark (aka com.companyname.obrien.connect.forms:attr/colorPrimaryDark)' not found.

Source\Obrien.Connect.Forms.Android\Resources\values\styles.xml(3,0): Error APT2260: style attribute 'attr/colorAccent (aka com.companyname.obrien.connect.forms:attr/colorAccent)' not found.

Source\Obrien.Connect.Forms.Android\Resources\values\styles.xml(4,0): Error APT2260: style attribute 'attr/windowActionModeOverlay (aka com.companyname.obrien.connect.forms:attr/windowActionModeOverlay)' not found.

C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Xamarin\Android\Xamarin.Android.Aapt2.targets(155,3): Error APT2260: resource style/TextAppearance.AppCompat.Button (aka com.companyname.obrien.connect.forms:style/TextAppearance.AppCompat.Button) not foun

Это YAML для конвейера:

trigger:
- develop
- feature/*

pool:
  vmImage: 'windows-2019'

variables:
- group: 'ci-build'

steps:
- task: NuGetToolInstaller@1
  displayName: 'Install NuGet 5.4.0' 
  inputs:
    versionSpec: '5.4.0'

- task: DotNetCoreCLI@2
  displayName: 'Restore .NET Packages'
  inputs:
    command: restore
    projects: '**/OBrien.Connect.Forms*/*.csproj'
    verbosityRestore: minimal

- task: NuGetCommand@2
  displayName: 'Restore Android Packages'
  inputs:
    command: 'restore'
    restoreSolution: '**/OBrien.Connect.Forms.sln'

- task: VSBuild@1
  displayName: 'Build Solution'
  inputs:    
    solution: '**/$(solutionName)' 
    vsVersion: '16.0'
    configuration: '$(buildConfiguration)'

I сначала нужно было использовать dotnet restore для проектов в решении, чтобы я мог собрать их в последующей задаче VSBuild, которая отлично работает. Однако это не восстанавливает пакеты, необходимые для проекта Xamarin. Android, поскольку он основан на Mono и игнорируется при первом восстановлении.

Именно поэтому я добавил второе восстановление NuGet для всего решения. , но это никогда ничего не делает - никаких ошибок, только вывод:

##[section]Starting: Restore Android Packages
==============================================================================
Task         : NuGet
Description  : Restore, pack, or push NuGet packages, or run a NuGet command. Supports NuGet.org and authenticated feeds like Azure Artifacts and MyGet. Uses NuGet.exe and works with .NET Framework apps. For .NET Core and .NET Standard apps, use the .NET Core task.
Version      : 2.161.1
Author       : Microsoft Corporation
Help         : https://docs.microsoft.com/azure/devops/pipelines/tasks/package/nuget
==============================================================================
SYSTEMVSSCONNECTION exists true
SYSTEMVSSCONNECTION exists true
[command]C:\windows\system32\chcp.com 65001
Active code page: 65001
Detected NuGet version 5.4.0.6315 / 5.4.0+d790b66be476cd901a56bd46ada037162097ee21.d790b66be476cd901a56bd46ada037162097ee21
SYSTEMVSSCONNECTION exists true
Saving NuGet.config to a temporary config file.
[command]C:\hostedtoolcache\windows\NuGet\5.4.0\x64\nuget.exe sources Add -NonInteractive -Name NuGetOrg -Source https://api.nuget.org/v3/index.json -ConfigFile D:\a\1\Nuget\tempNuGet_552.config
Package source with Name: NuGetOrg added successfully.
##[section]Finishing: Restore Android Packages

Я пытался использовать задачу сборки XamarinAndroid@1 вместо построения всего решения, но у него точно такие же ошибки сборки.

1 Ответ

1 голос
/ 16 января 2020

Я нашел хорошее решение от коллеги, у которой была точно такая же проблема, которая заключается в том, чтобы вызвать цель Восстановления из задачи VSBuild, вместо того, чтобы делать восстановление NuGet / do tnet, вот YAML:

- task: VSBuild@1
  displayName: 'Restore Packages'
  inputs:
    solution: '**/$(solutionName)'
    configuration: '$(buildConfiguration)'
    vsVersion: '16.0'
    msbuildArgs: '/t:Restore'

Это отлично подходит для построения всего решения.

...