Ошибка команды Dotnet с ненулевым кодом выхода в следующих проектах :

#tfs #azure-devops

#tfs #azure-devops

Вопрос:

Я пытаюсь создать на TFS API, который содержит несколько проектов в dotnet.core3.1 Когда я запускаю команду dotnet build Api.sln на TFS, вот результат

[ошибка] Ошибка команды Dotnet с ненулевым кодом выхода в следующих проектах: D: TFS Agent01 _work 18 s PMTApi.sln


Контекст:

TFS 2017

Проекты Dotnet Core 3.1

Управление исходным кодом в TFS git

Агентам не удается подключиться к внешней сети (Интернет)

Импорт зависимостей выполняется с частного сервера благодаря NuGet.Файл конфигурации настроен для перенаправления импорта зависимостей не наhttps://api.nuget.org/v3/index.json сервер, но хорошо на сервере нашей частной компании.


Объяснение:

В TFS git source manager проект PMTApi.sln содержит 7 файлов .csproj

Но в файле PMTApi.sln есть только 4 .csproj, которые включены


Локальный результат:

Хорошая сборка dotnet завершает 5 успешных проектов.


Результат в TFS:

Не очень хорошо.

[ошибка] Ошибка команды Dotnet с ненулевым кодом выхода в следующих проектах: D: TFS Agent01 _work 18 s PMTApi.sln


Наблюдение:

У меня сложилось впечатление, что TFS основана на всех файлах .csproj из TFS git source manager, а не из PMTApi.sln Заключение проекты, на которые нет ссылок в PMTApi.sln, все еще пытаются восстановить зависимости, которые вызывают ошибку top.


Тест:

Я попытался исключить эти 3 проекта .csproj в моем NuGet.Подобный файл конфигурации, но он не работает

     <?xml version="1.0" encoding="utf-8"?>
<configuration>
  <packageSources>
    <add key="XXX NuGet Packages" value="http://privateServer/nuget" />
  </packageSources>

    <ItemGroup>
        <ProjectReference Exclude="..folderName1projectName1.csproj" />
        <ProjectReference Exclude="..folderName2projectName2.csproj" />
        <ProjectReference Exclude="..folderName3projectName3.csproj" />
    </ItemGroup>
</configuration>
  

У вас есть какие-либо идеи для успешной задачи сборки dotnet?


Построение:

конвейер определения CI


Возврат TFS:

Возврат TFS


Локальная конфигурация:

введите описание изображения здесь

1- здесь вы должны щелкнуть правой кнопкой мыши на решении

2- управление пакетом Nuget для решения

3- добавьте URL вашего частного сервера

4- и снимите флажок с сервера api.NuGet.org

в моем случае я также снимаю флажки с пакетов Visual Studio

Комментарии:

1. Можете ли вы показать, как вы создаете его на tfs?

Ответ №1:

Вы должны указать csproj файл (ы) для использования в Project(s) аргументе, а не sln file. Проверьте описание этого аргумента:

Путь к используемым файлам csproj. Вы можете использовать подстановочные знаки (например, **/*.csproj для всех файлов .csproj во всех вложенных папках). Это поле соответствует шаблону glob и выполняется в корне репозитория всегда, независимо от рабочего каталога.

https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/build/dotnet-core-cli?view=azure-devops

Комментарии:

1. Делая то, что вы говорите. У меня всегда одна и та же ошибка: сбой команды Dotnet с ненулевым кодом выхода в следующих проектах: в каждом из проектов. Кроме того, в каждом проекте мне сообщается об ошибке: NETSDK1004: Файл активов ‘D: TFS Agent01 _work 18 s PMTApiWeb obj project.assets.json’ не найден. Запустите восстановление пакета NuGet для создания этого файла. [D: TFS Agent01 _work 18 s PMTApiWeb PMTApiWeb.csproj]

2. Я обнаружил информацию о том, что restore NuGet не восстанавливает все пакеты, для меня мне не хватает файлов obj / project.json, затем я попробовал команду: dotnet restore, если она работает лучше, за исключением одного проекта. Сбой команды Dotnet с ненулевым кодом выхода в следующих проектах: D: TFS Agent01 _work 18 s PMTApicORE PMTApiCore.csproj Здесь я снова делаю вывод, что он не может найти пакет в моей частной сети. Трудно найти тонкую разницу между командами: восстановление NuGet и восстановление dotnet.

3. Я думаю, что проблема возникает оттуда, потому что без восстановления зависимостей проекты не смогут правильно строить.

4. Вы можете перейти на компьютер агента сборки, чтобы проверить, загружены ли пакеты, требуемые проектами. Кроме того, попробуйте установить переменной system.debug значение True и проверьте журнал, есть ли дополнительная информация.

5. Как продвигается ваша проблема?