Автоматически создавать пакет NuGet, включающий ссылочные зависимости
Я хочу запустите локальный / внутренний репозиторий NuGet. Я думаю, что понял, как "повторно использовать" существующие пакеты NuGet, включив их в фиктивный проект с помощью NuGet и сканируя файл пакета в возьмите мой локально кэшированный .nupkg
файлы, но...
как создать пакет nuget (.nupkg
) из проекта, автоматически включая все dll
зависимости, а не только те, которые схватили через Из NuGet?
в частности:
- создать решение
- Добавить новый проект
- добавить ссылки на различные
.dll
файлы/другие проекты - добавить пакеты NuGet через менеджер пакетов / cmdline / whatever
-
что-то автоматически создает
.nupkg
из того, что я нашел, Вы должны делать вещи как
- вручную редактировать Добавить
<BuildPackage>true</BuildPackage>
включить зависимостей - вручную
.nuspec
файл и вручную список зависимостей (похож ?) - вручную
nuget pack
на
но все ручное, что глупо. Даже полуавтоматические решения по-прежнему неудобны или полуавтоматические:
-
создать
.nuspec
шаблоны - похоже, не включает зависимости, а только метаданные -
NuGet pack через build-event (Шаг #5), который вам нужно добавить вручную в каждый проект, и он имеет свои причуды:
"$(SolutionDir).nugetNuGet.exe" pack "$(ProjectPath)" -Properties Configuration=Release move /Y *.nupkg "$(TargetDir)"
Я соглашусь на то, что автоматически создает .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 вашего нового проекта. Надеюсь, это поможет ;).