Автоматическая сборка TFS: сбой Nuget с кодом (1) - PullRequest
0 голосов
/ 26 июня 2018

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

Вот мой процесс сборки в TFS:

Capture of build process after fail

Если я удаляю пакет NuGet и NuGet push, он работает без проблем.

Вот сообщения, которые я получаю по TFS:

Found packages.config. Using packages listed as dependencies
NuGet.CommandLine.CommandLineException: Unable to find 'Extended.Wpf.Toolkit.3.3.0.nupkg'. Make sure the project has been built.
   at NuGet.CommandLine.ProjectFactory.AddDependencies(Dictionary`2 packagesAndDependencies)
   at NuGet.CommandLine.ProjectFactory.ProcessDependencies(PackageBuilder builder)
   at NuGet.CommandLine.ProjectFactory.CreateBuilder(String basePath, NuGetVersion version, String suffix, Boolean buildIfNeeded, PackageBuilder builder)
   at NuGet.Commands.PackCommandRunner.BuildFromProjectFile(String path)
   at NuGet.CommandLine.PackCommand.ExecuteCommand()
   at NuGet.CommandLine.Command.ExecuteCommandAsync()
   at NuGet.CommandLine.Command.Execute()
   at NuGet.CommandLine.Program.MainCore(String workingDirectory, String[] args)
Unable to find 'Extended.Wpf.Toolkit.3.3.0.nupkg'. Make sure the project has been built.
##[error]The nuget command failed with exit code(1) and error(Unable to find 'Extended.Wpf.Toolkit.3.3.0.nupkg'. Make sure the project has been built.)

В журналах говорится, что он не находит 'Extended.Wpf.Toolkit.3.3.0.nupkg'. Я использую NuGet Restore перед сборкой, и сборка верна. В журналах TFS видно, что он использует Extended.Wpf.Toolkit.3.3.0

Я уже пытался добавить -Prop Platform=AnyCPU к командам, используемым NuGet для упаковки, но это ничего не изменило. Я запустил команду на своем компьютере, и она сработала.

Вот страницы, которые я уже проверил в поиске исправления:

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Возможно, вам не хватает конфигурации, когда вы делаете пакет и выбираете .csproj файл.

Если вы выбрали $(BuildConfiguration) в качестве конфигурации для пакета .

Также необходимо указать значение BuildConfiguration

enter image description here

Посмотрите на разницу в использовании **\*.csproj и **\*.nuspec

Укажите файлы .csproj (например, **\*.csproj) для простого проекты. В этом случае:

  • Упаковщик компилирует файлы .csproj для упаковки.
  • Необходимо указать конфигурацию для пакета (см. Ниже).
  • Вам не нужно регистрироваться в файле .nuspec. Если вы отметите один из них, упаковщик запомнит его настройки и заменит токены, такие как $ id $ и $ Описание $.

Укажите файлы .nuspec (например, **\*.nuspec) для более сложных проекты, такие как мультиплатформенные сценарии, в которых вам нужно скомпилировать и упаковать в отдельные шаги. В этом случае:

  • Упаковщик не компилирует файлы .csproj для упаковки.
  • Каждый проект упакован, только если в нем зарегистрирован файл .nuspec.
  • Упаковщик не заменяет токены в файле .nuspec (кроме элемента, см. Использование номера сборки в пакете версий, ниже). Необходимо указать значения для таких элементов, как <id/> и
    <description/>. Самый распространенный способ сделать это - жестко кодировать
    значения в файле .nuspec.
0 голосов
/ 27 июня 2018

Наконец-то я смог это исправить

Обходной путь, который я нашел, заключался в добавлении файла .nuspec в мой проект. Я изменил задачу пакета NuGet, чтобы использовать nuspec вместо csproj.

После этого все работало нормально (насколько я вижу), за исключением иконки пакета, которая пока не видна. Но это другая история!

Ссылка на nuspec здесь https://docs.microsoft.com/en-us/nuget/reference/nuspec

Здесь можно найти nuspec по умолчанию https://docs.microsoft.com/en-us/nuget/create-packages/creating-a-package

...