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


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

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

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

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

1 3

1 ответ:

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

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

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

Существует несколько способов вызова нугет.exe на этапе после сборки; многие из них также объясняются на сайте NuGet.

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

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

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