Почему конвейерная задача ArtifactoryNuget@1 восстанавливается на старой версии Microsoft.NetCore.App? - PullRequest
0 голосов
/ 05 февраля 2020

Я использую задачу ArtifactoryNuget@1 для восстановления NugetPackages из JFrog Artifactory. Мой Azure конвейер DevOps начал неожиданно завершать работу через неделю go (31.1.2020) из-за восстановления артефактной задачи с использованием Microsoft.NetCore.App версии 2.1.14, где задачи DotNetCoreCLI@2 после него используют версию 2.1.15 ,

Фактическая ошибка, которую я получаю от задачи DotNetCoreCLI@2: NETSDK1061: The project was restored using Microsoft.NETCore.App version 2.1.14, but with current settings, version 2.1.15 would be used instead. To resolve this issue, make sure the same settings are used for restore and for subsequent operations such as build or publish. Typically this issue can occur if the RuntimeIdentifier property is set during build or publish but not during restore.

Я выполняю автономное развертывание для Net Базового проекта развертывания, поэтому проект файл был настроен для этого.

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <RuntimeIdentifiers>win10-x64</RuntimeIdentifiers>
    <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
  </PropertyGroup>
  ...

Конвейер настроен так:

- task: ArtifactoryNuGet@1
  inputs:
    command: 'restore'
    artifactoryService: 'xxxx'
    solutionPath: 'xxxx.sln'
    targetResolveRepo: nuget

- task: DotNetCoreCLI@2
  inputs:
    command: 'build'
    projects: xxxx.csproj'
    arguments: '--configuration Release --runtime win10-x64 --no-restore 

Раньше все работало прекрасно, но сейчас я не могу найти решение для правильной сборки в Azure DevOps (локальные строительные работы). Мое лучшее предположение состоит в том, что машины конвейера DevOps были обновлены с временем выполнения 2.1.15, но задача JFrog ArtifactoryNuget по какой-то причине не может использоваться, и в конечном итоге она использует 2.1.14.

Я пытался увидеть из исходный код задачи как выбирается версия, но я думаю, что это входит во внутренности Nuget. Я также попытался установить его явно с помощью <RuntimeFrameworkVersion>, но это привело к тому, что задача ArtifactoryNuGet@1 использовала даже более старую версию 2.1.1. Само репозиторий nuget представляет собой виртуальное репо, объединяющее nuget.local и nuget.remote.

Вопросы:

  • Почему это внезапно сломалось? Это из-за обновлений версий на Azure конвейерных машинах или что-то еще?
  • Почему ArtifactoryNuGet@1 получает версию 2.1.14, если другие задачи используют 2.1.15 при использовании "TargetLatestRuntimePatch"?
  • Есть ли способ указать идентификатор времени выполнения (например, win10-x64) для задачи ArtifactoryNuGet@1, как предлагается в сообщении об ошибке?

Спасибо!

ПРИМЕЧАНИЕ. Отмеченный ответ является неоптимальным обходным путем для этой проблемы, пока что-то фактически не исправит ее.

1 Ответ

0 голосов
/ 06 февраля 2020

Как правило, он запрашивает самое последнее исправление, установленное, когда в файле проекта установлено TargetLatestRuntimePatch на true.

Итак, убедитесь, что в артефакте существует версия Microsoft.NetCore.App version 2.1.15. Согласно вашему описанию последний патч version 2.1.14 в вашей службе JFrog Artifactory.

Если вы используете сценарий, попробуйте следующее:

<PropertyGroup>
   <TargetFramework>netcoreapp2.1</TargetFramework>
   <RuntimeIdentifiers>win10-x64</RuntimeIdentifiers>
   <RuntimeFrameworkVersion>2.1.14</RuntimeFrameworkVersion>
</PropertyGroup>

<ItemGroup>
   <PackageReference Update="Microsoft.NETCore.App" Version="2.1.14" />
</ItemGroup> 

Если это не сработает, пожалуйста, обратитесь Ниже приведены ссылки для дальнейшего устранения неполадок:

...