Сбой сборки с сообщением «Ошибка: процесс '/ usr / bin / do tnet» завершился неудачно с кодом выхода 1 »после добавления« no-build: true »в команду do tnet pack - PullRequest
1 голос
/ 15 января 2020

Конвейер CI работает хорошо, если я удаляю опцию nobuild: true из задачи DotNetCoreCLI@2 для упаковки проекта (ie для создания пакета NuGet), но я Я не могу понять, что особенного, кроме не построения проекта, дает опция nobuild. Мне не нужно снова собирать проект, поскольку предыдущая задача уже собрала проект и заблокировала сборочную версию сгенерированных библиотек DLL. Я хочу использовать одну и ту же сборку для создания пакета NuGet и для того же, мне нужно передать опцию NoBuild, но при этом то же самое прерывает конвейер.

Конвейер выдает ошибку, что библиотеки DLL для упаковки отсутствует в указанном месте, но я попытался посмотреть на это место и смог найти библиотеки DLL. Одна вещь, которая меня смущает, заключается в том, что хотя я дал nobuild значение true, но все же задачи отображаются как «Построение проекта».

- task: DotNetCoreCLI@2
  displayName: ".NET pack"
  inputs:
    command: pack
    packagesToPack: ${{ parameters.packagesToPack }}
    nobuild: true
    versioningScheme: byEnvVar
    versionEnvVar: CI_Version
    packDirectory: $(build.artifactStagingDirectory)\${{ parameters.packTo }}
    verbosityPack: 'Normal'

Error:

Также важно отметить, что то же самое (nobuild: true) работает на Windows Агент, но не работает на Агент Ubuntu.

PS: Это может быть случай, когда windows обновил агент и вызвал проблему. Я искал проблему и обнаружил, что нужно заблокировать. net SDK в конвейере сборки

Ответы [ 2 ]

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

Спасибо за другие ответы, которые могут быть связаны с проблемой, но об этом уже позаботились.

Проблема была только в среде Linux из-за проблемы в. NET SDK. См. здесь

Ошибка (DLL не могут быть найдены в указанном пути), которая была сгенерирована, была верна, но также вводила в заблуждение. Библиотеки DLL создавались в папке Release на этапе сборки, и когда я упаковывал библиотеки DLL, они находились в папке release . Хотя Release и release остаются неизменными в Windows Environment, но Ubuntu с учетом регистра генерирует ошибку.

Реализация SDK. Net Core пропустил IgnoreCase в опции Regex, и это привело к разрыву сборки при переключении на Linux агента.

DotnetBuild: enter image description here

Do tnet Пакет: enter image description here

Решение: Определить папку, в которой будут создаваться библиотеки DLL. .csproj и шаг автоматической сборки и упаковки будут выбирать библиотеки DLL оттуда.

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

Для этой ошибки NU5026 это означает, что упаковываемый проект еще не был построен и, следовательно, не может быть упакован. Пожалуйста, просмотрите эту ссылку .

The file ''F:\project\bin\Debug\net461\project.exe' to be packed was not found on disk.

Согласно вашему описанию, вы отменили сборку автомата c перед пакетом. Существует вероятность того, что ваша задача сборки и пакетная задача не выполнялись с одинаковой конфигурацией. Например, в задаче сборки do tnet проект автоматически создается с конфигурацией Debug, а в задаче пакета вы задаете конфигурацию как Release.

в задаче сборки do tnet, проект автоматически создается с конфигурацией Debug.

enter image description here

В задаче пакета do tnet конфигурация по умолчанию для пакета - Release

enter image description here

Если вы не отмените автоматическую сборку c перед пакетом, в пакете. net задача будет встроена в проект Release configuration.

enter image description here

Поэтому, пожалуйста, проверьте журнал вашей задачи сборки и задачи пакета, убедитесь, что команда do tnet build и do tnet команда pack использует ту же конфигурацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...