Создание файла nuget из nuspe c с Azure конвейерами - PullRequest
0 голосов
/ 28 января 2020

Я столкнулся со странной проблемой и пытался исправить в течение нескольких дней. Локально, я могу построить свой проект с помощью следующего файла nuspe c. Файл nuspe c сохраняется в репозитории и копируется локально при сборке из проекта c# и находится в подпапке с именем «nugetcreation». Локально я могу запустить файл nuspe c как есть, и он сгенерирует пакет nuget.

Настройка папки: проект -проектные файлы -nugetcreation -readme и nuspe c файлы

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
  <metadata>
    <id>my.Utility.TraceWriter</id>
    <version>1.0.0-beta</version>
    <title>my.Utility.TraceWriter</title>
    <authors>justme</authors>
    <owners>justme</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>custom trace items</description>
    <releaseNotes>initial release</releaseNotes>
  </metadata>
  <files>
    <file src="Content\MyReadMes\My.Utility.TraceWriter.md" target="content\net461\MyReadMes\My.Utility.TraceWriter.md" />
    <file src="..\My.Utility.TraceWriter.dll" target="lib\net461\My.Utility.TraceWriter.dll" />
    <file src="..\My.Utility.TraceWriter.pdb" target="lib\net461\My.Utility.TraceWriter.pdb" />
  </files>
</package>

Проблема: Когда я создаю Azure конвейер, я говорю ему запустить файл nuspe c, и я получаю сообщение об ошибке

##[error]The nuget command failed with exit code(1) and error(Error NU5019: File not found: '..\My.Utility.TraceWriter.dll'.

Но он абсолютно правильно генерируется из процесса vsbuild

CopyFilesToOutputDirectory:
  Copying file from "d:\a\1\s\My.Utility.TraceWriter\My.Utility.MethodTracer\obj\Release\My.Utility.TraceWriter.dll" to "d:\a\1\s\My.Utility.TraceWriter\My.Utility.MethodTracer\bin\Release\My.Utility.TraceWriter.dll"

Шаг создания натива в azure Трубопровод довольно простой c, ничего особенного. Все модные вещи, которые я храню в файле nuspe c. Я пытаюсь заставить это работать над проектом basi c с файлом nuspe c, потому что у меня гораздо более сложная упаковка nuget, так что это моя тестовая версия.

- task: NuGetCommand@2
  displayName: 'Creating nuget package'
  inputs:
    command: 'pack'
    packagesToPack: '**/*.nuspec'
    versioningScheme: 'off'
    arguments: '--configuration $(buildConfiguration)'

Пока что Я пытался использовать:

  • ** \ My.Utility.TraceWriter.dll (без ошибок, но в папке lib нет dll. Действует так, как будто эта строка только что пропущена)
  • bin ** \ My.Utility.TraceWriter.dll
  • . \ My.Utility.TraceWriter.dll
  • $ конфигурация $ \ My.Utility.TraceWriter. dll
  • ** \ $ configuration $ \ My.Utility.TraceWriter.dll

... ничего не работает. Кто-нибудь имеет какие-либо идеи о том, почему конвейер azure не принимает правильную (.. \ My.Utility.TraceWriter.dll) запись относительного пути в файле nuspe c и как это исправить?

Мой лоб болит от удара по клавиатуре ...

- РЕДАКТИРОВАТЬ -

Немного больше информации. Похоже, что при запуске команды nuget pack происходит 2 вещи. Весь вывод приведен ниже, но похоже, что после успешного создания nuget он пытается упаковать его снова и на этот раз не может найти файлы ??

Added file '_rels/.rels'.
Added file 'My.Utility.TraceWriter.nuspec'.
Added file 'content/net461/MyReadMes/My.Utility.TraceWriter.md'.
Added file 'lib/net461/My.Utility.TraceWriter.dll'.
Added file 'lib/net461/My.Utility.TraceWriter.pdb'.
Added file 'package/services/metadata/core-properties/f2a4d059fea6458dac5889de57641f5b.psmdcp'.

Successfully created package 'D:\a\1\a\My.Utility.TraceWriter.1.0.0-beta.nupkg'.
WARNING: NU5128: Some target frameworks declared in the dependencies group of the nuspec and the lib/ref folder do not have exact matches in the other location. Consult the list of actions below:
- Add a dependency group for .NETFramework4.6.1 to the nuspec
Attempting to pack file: D:\a\1\s\My.Utility.TraceWriter\My.Utility.MethodTracer\nuget information\My.Utility.TraceWriter.nuspec
C:\hostedtoolcache\windows\NuGet\5.4.0\x64\nuget.exe pack "D:\a\1\s\My.Utility.TraceWriter\My.Utility.MethodTracer\nuget information\My.Utility.TraceWriter.nuspec" -NonInteractive -OutputDirectory D:\a\1\a -Properties Configuration=Release -Verbosity Detailed
Error NU5019: File not found: '..\My.Utility.TraceWriter.dll'.
NuGet Version: 5.4.0.6315
NuGet.Packaging.Core.PackagingException: File not found: '..\My.Utility.TraceWriter.dll'.

1 Ответ

0 голосов
/ 28 января 2020

Stupid. packagesToPack: '** / *. nuspe c' извлекает обе nuspecs: одну в источнике и одну, скопированную в папку выходного лотка.

переопределение исправило проблему

...