Автоматически создавать пакет NuGet, включающий ссылочные зависимости

Я хочу запустите локальный / внутренний репозиторий NuGet. Я думаю, что понял, как "повторно использовать" существующие пакеты NuGet, включив их в фиктивный проект с помощью NuGet и сканируя файл пакета в возьмите мой локально кэшированный .nupkg файлы, но...

как создать пакет nuget (.nupkg) из проекта, автоматически включая все dll зависимости, а не только те, которые схватили через Из NuGet?

в частности:

  1. создать решение
  2. Добавить новый проект
  3. добавить ссылки на различные .dll файлы/другие проекты
  4. добавить пакеты NuGet через менеджер пакетов / cmdline / whatever
  5. что-то автоматически создает .nupkg

из того, что я нашел, Вы должны делать вещи как

  • вручную редактировать Добавить <BuildPackage>true</BuildPackage> включить зависимостей
  • вручную .nuspec файл и вручную список зависимостей (похож ?)
  • вручную nuget pack на

но все ручное, что глупо. Даже полуавтоматические решения по-прежнему неудобны или полуавтоматические:

Я соглашусь на то, что автоматически создает .nuspec манифест из ссылок на проекты. Тогда теоретически + событие сборки nuget может быть свернуто в пакет build-project/nuget, именно это я и хочу увидеть.

3 ответов


ваша точка #3 (добавить ссылки на различные .dll файлы / другие проекты ) действительно содержит две разные проблемы: (1) добавить ссылки на различные dll-файлы и (2) добавить ссылки на другие проекты в том же решении.

номер (2) здесь получил некоторую дополнительную поддержку с NuGet 2.5. Можно добавить параметр для включения ссылок на другие проекты в том же решении при создании пакета NuGet для проект:

nuget pack projectfile.csproj -IncludeReferencedProjects

Если projectfile.csproj ссылается на любые другие проекты в вашем решении, которые также представлены как пакеты NuGet, пакеты NuGet этих проектов будут добавлены как зависимости. Если он ссылается на проекты в вашем решении, которые не выставляют себя как пакеты NuGet, их DLL будут включены в этот пакет NuGet.

Что касается (1), Если вы часто добавляете DLL в свои проекты, которые недоступны в виде пакетов NuGet, вы можете просто создайте свои собственные (внутренние) пакеты NuGet с этими файлами. Если вы добавите эти библиотеки DLL в виде пакета NuGet вместо файлов напрямую, этот пакет NuGet будет зависимостью в пакете NuGet вашего проекта.


для других гуглеров вы можете использовать это, если вы используете NuGet.целевой файл для запуска NuGet Pack:

<Target Name="PrePackage" BeforeTargets="BuildPackage">
  <PropertyGroup>
    <BuildCommand>$(BuildCommand) -IncludeReferencedProjects</BuildCommand>
  </PropertyGroup>
</Target>

зацените!

решение, которое я нашел, является расширением для Visual Studio: https://visualstudiogallery.msdn.microsoft.com/fbe9b9b8-34ae-47b5-a751-cb71a16f7e96/view/Reviews

вы просто добавляете новый проект под названием NuGet Package Пакет NuGet

тогда вы добавляете интересные вам проекты к ссылкам и BOOOM !! Все зависимости и каталоги файлов добавляются автоматически. Если вы хотите изменить данные NuSpec щелкните правой кнопкой мыши в project и перейдите в Properties, затем измените то, что вы хотите. Сгенерированные NuSpec и nupkg будут в папке obj вашего нового проекта. Надеюсь, это поможет ;).