Автоматическое обновление файла nuspec в процессе сборки.

Мне удалось использовать NuGetter для создания определения сборки, чтобы автоматизировать процесс создания пакета NuGet и загрузить пакет. в репозиторий NuGet.

Но я хотел бы еще больше автоматизировать процесс. Ниже приведен список шагов, которые я хотел бы автоматизировать как часть процесса сборки:

  • Процесс сборки должен иметь возможность создавать файл nuspec вместо того, чтобы я вручную создавал этот файл и сохранял его в репозитории системы управления версиями, чтобы процесс сборки мог его подобрать.
  • Процесс сборки должен иметь возможность заменять поля nuspec.

Поля nuspec, которые я действительно хочу автоматизировать:

Авторы Я хочу, чтобы в процессе сборки это поле в файле nuspec было заменено именем человека, который регистрирует код.

Примечания к выпуску Я хочу, чтобы в процессе сборки это поле в файле nuspec было заменено комментарием регистрации.

Кто-нибудь смог это сделать? Если да, то как вы его автоматизировали?


person H A    schedule 05.12.2012    source источник


Ответы (3)


Это может помочь.

Я создал автоматизированный процесс публикации обновлений для проекта с открытым исходным кодом.

https://github.com/DefinitelyTyped/NugetAutomation

Возможно, что-то интересное для вас.

  • Как мы используем powershell для копирования «шаблона» nuspec и вставки нужных нам полей. (вы можете использовать это, чтобы аналогичным образом заменить поля «авторы, релизные заметки»)
  • Отправьте эхо-запрос на общедоступный сервер nuget, чтобы получить текущую версию и увеличить ее.

Это требует некоторых знаний Powershell, но я надеюсь, что это даст вам старт.

person Jason Jarrett    schedule 07.03.2013
comment
Спасибо, что поделились своим сценарием - person freedomn-m; 30.11.2017

этот пост здесь Как избежать создания XML-документа при использовании nuget pack есть идеи

<XmlUpdate Namespace="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd" XmlFileName="My.Assembly.nuspec" XPath="//package/metadata/licenseUrl" Value="http://someurl" />          
<XmlUpdate Namespace="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd" XmlFileName="My.Assembly.nuspec" XPath="//package/metadata/projectUrl" Value="http://someurl" />          
<XmlUpdate Namespace="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd" XmlFileName="My.Assembly.nuspec" XPath="//package/metadata/iconUrl" Value="http://somenice.png" />            
<XmlUpdate Namespace="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd" XmlFileName="My.Assembly.nuspec" XPath="//package/metadata/tags" Value="My.Assembly" />           
<XmlUpdate Namespace="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd" XmlFileName="My.Assembly.nuspec" XPath="//package/metadata/releaseNotes" Value="Review readme.txt for details." />  
person Deepak    schedule 05.12.2012
comment
Этот пост не отвечает на мой вопрос. Я могу создать пакет NuGet с правильными файлами содержимого в процессе сборки, используя сценарии PowerShell, которые отлично работают. Я не пытаюсь включить/исключить файл из пакета NuGet. Моя проблема в том, что я хотел бы создать файл nuspec в процессе сборки. Итак, я хотел бы сначала извлечь файл nupsec, затем обновить поля файла nuspec для Author и ReleaseNotes, в-третьих, вернуть файл nuspec. Эти три шага должны быть выполнены до того, как NuGetter получит файл nuspec. - person H A; 05.12.2012

Вы можете добавить новое событие после сборки, которое запускает сценарий, который берет версию из файла «packages.config» и записывает их обратно в файл nuspec.

C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe -ExecutionPolicy Unrestricted -Command .'$(ProjectDir)..\PathToScirptLocation\NuspecAutoUpdate.ps1' -NuspecPath '$(ProjectDir)API.nuspec' -PackagesConfigPath '$(ProjectDir)packages.config'

Я загружаю сценарий и событие после сборки в свой GIT для всех, кому это понадобится.

https://github.com/avrum/NuspecAutoUpdate

person Aviram Fireberger    schedule 17.05.2017