Попробуйте следующее:
1) Переименуйте ваш .nuspec, чтобы он соответствовал имени .csproj:
Если ваш проект: MyLib.csproj
Переименуйте MyLib.nuspec в MyLib.csproj.nuspec
2) Измените ваш файл .nuspec следующим образом:
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<version>$version$</version>
<authors>$author$</authors>
<id>$id$</id>
<title>$id$</title>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>$description$</description>
<summary>$description$</summary>
</metadata>
</package>
Здесь работа выполняется токеном Nuget "$ version $" (и другими)
Взгляните на эту статью Nuget для получения дополнительных токенов и информации.
3) Используйте следующее событие после сборки в каждом проекте, в который вы помещаете файл .csproj.nuspec (пожалуйста, удалите клавиши Enter):
mkdir "$(SolutionDir)GeneratedPackages"
"$(SolutionDir).nuget\nuget.exe" pack "$(ProjectPath)"
-OutputDirectory "$(SolutionDir)GeneratedPackages"
-basepath "$(SolutionDir)$(ProjectName)\$(OutDir)"
Если у нас есть решение C: \ MySolution \ MyLib.sln и проект в c: \ MySolution \ MyLib \ MyLib.csproj, наш файл .nuspec должен быть c: \ MySolution \ MyLib \ MyLib.csproj.nuspec и команда Post Build Event будет выглядеть так:
mkdir "C:\MySolution\GeneratedPackages"
"C:\MySolution\.nuget\nuget.exe" pack "C:\MySolution\MyLib\MyLib.csproj"
-OutputDirectory "C:\MySolution\GeneratedPackages"
-basepath "C:\MySolution\MyLib\bin\debug\"
Исправить путь к nuget.exe. В моем случае я использую Nuget «автоматически восстановить отсутствующие зависимости при сборке», и у меня есть локальная копия в решении, в папке .nuget.
Обратите внимание, что мы не вызываем nuget с файлом .nuspec, мы
вызывая его напрямую через .csproj !!
Эта стратегия также будет включать все зависимости Проекта, объявленные в
packages.xml, который Nuget создает при установке пакетов.
(автоматически, каждый раз, когда вы строите)
И все готово! Теперь измените сборку и версию файла в
Проект> Свойства> Информация о сборке
ВАЖНО: Если вы установите токены $ author $ и / или $ description $, заполните также поля Company Company и Description Ассамблеи. Если у вас возникли проблемы, удалите токены $ author $ и / или $ description $ и попробуйте снова скомпилировать.
и соберите свой проект, вы увидите в папке / GeneratedPackages папку MyLib.X.X.X.X.nupack с версией, которую вы указали в свойствах проекта. Если вы установите зависимости, вы увидите, что они были автоматически включены как зависимости пакета.
Мы используем эту стратегию с CI-сервером Jenkins для автоматического построения решения и копирования пакетов из GeneratedPackages в наш пользовательский NugetServer.
Вы также можете завершить мероприятие Post Build с
nuget push
Чтобы отправить сгенерированный пакет на сервер Nuget
ВЫПУСК В ВЫПУСКЕ:
Как уже упоминалось в комментариях, существует проблема, которая не позволяет Nuget.exe генерировать пакеты в режиме RELEASE.
Сделайте это, чтобы исправить это:
Для каждого проекта с этим скриптом:
- Свойства проекта> Build
- В раскрывающемся списке «Конфигурация» выберите «Все конфигурации»
- В разделе «Ouput» измените поле «Выходной путь:», например, я сейчас использую «bin \» (без кавычек)