Подтвердить что ты не робот

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

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

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

В частности:

  • Создать решение
  • Добавить новый проект
  • Добавить ссылки на различные .dll файлы/другие проекты < - это недостающая часть
  • Добавить пакеты NuGet через диспетчер пакетов /cmdline/whatever
  • что-то автоматически создает .nupkg

Из того, что я нашел, вы должны делать что-то вроде

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

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

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

4b9b3361

Ответ 1

Ваша точка № 3 (добавление ссылок на различные DLL файлы/другие проекты < - это недостающая часть) действительно содержит две разные проблемы: (1) добавить ссылки на различные файлы dll и (2) добавить ссылки к другим проектам в том же решении.

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

nuget pack projectfile.csproj -IncludeReferencedProjects

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

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

Ответ 2

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

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

Ответ 3

Проверьте это!

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

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

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