Создайте пакет 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, что я действительно хочу видеть.
Ответы
Ответ 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 вашего нового проекта.
Я надеюсь, что это поможет;).