Укажите целевой путь файла пакета Octopack

Я обнаружил, что OctoPack невероятно прост при создании .nupkg файлы пакетов nuget, однако мне бы хотелось .nuspec включенный файл (в настоящее время находится в другой папке, такой как obj/octopackage или что-то), и все библиотеки должны быть помещены в lib/net452 folder так что общая структура выглядит так:

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

В настоящее время все, что должно быть в папке lib/net452, просто помещается в корень вместе с _rels а также packageи как уже упоминалось .nuspec файл отсутствует.

Либо документация немного скудная, либо я совсем упустил, как это сделать в моем отладочном умственном тумане. Кто-нибудь знает, как указать OctoPack, где, в частности, поместить скомпилированный вывод в .nupkg файл?

1 ответ

Решение

Чтобы создать пакет NuGet, вы должны использовать nuget.exe, а не OctoPack. Я объясню почему через минуту.

.nuspec файл служит "планом" для вашего пакета NuGet (.nupkg). Итак, короткий ответ - просто указать местоположение в вашем .nuspec файл, используя target атрибут <files> элемент. Подробности можно найти на сайте NuGet, но это будет выглядеть примерно так:

<files>
  <file src="bin\$configuration$\*.dll" target="lib\net452\" />
</files>

Есть несколько способов вызвать nuget.exe на этапе после сборки; многие объяснены на сайте NuGet.

OctoPack не предназначен для создания пакетов для nuget.org; Он предназначен специально для создания пакетов для Octopus Deploy. Это создает пакеты одним из двух способов:

  1. Если есть web.config При наличии файла OctoPack предполагает, что проект является веб-проектом, и соответствующим образом упаковывает выходные данные. Он использует файл проекта, чтобы определить, какие элементы помечены как содержимое, а какие нет (хотя он всегда будет захватывать файлы преобразования web.config).
  2. В противном случае OctoPack предполагает, что проект является исполняемым файлом или компонентом, и просто упаковывает все, что находит в выходной папке (обычно \Debug\bin или же \Release\bin). Это поведение, которое вы видите.

Так как OctoPack использует nuget.exe под капотом, .nuspec файл переопределит оба вышеупомянутых случая. Поэтому, хотя вы можете использовать OctoPack для создания пакета NuGet, более уместно использовать nuget.exe.

Другие вопросы по тегам