Добавление пользовательского шага сборки с пакетом nuget

Я разрабатываю пакет nuget, который настроит текущий проект для использования стандарта управления версиями моей компании. У меня он делает все, что я хочу (пока), плавно, кроме добавления пользовательского шага сборки.

Исторически это делалось вручную путем непосредственного редактирования файла .csproj и добавления пары новых тегов в xml. Эти ...

  • Группа ресурсов
  • Цель

На самом деле они успешно добавляются, но я сделал это, отредактировав xml, а не через объект EnvDTE в параметре $project в install.ps1. Но я получаю всплывающее сообщение с вопросом, хочу ли я отменить свои изменения.

Я добавил $project.Save() в свой скрипт непосредственно перед тем, как внести изменения, и это избавляет от всплывающего окна, и я просто получаю сообщение о том, что проект изменился, и спрашивает меня, хочу ли я перезагрузить его. Что лучше, но все же не совсем идеально.

Есть лучший способ это сделать?


person Antony Scott    schedule 29.06.2011    source источник


Ответы (2)


Вы также можете использовать пакет NuGetPowerTools, написанный Дэвидом Фаулером (ведущим разработчиком NuGet).

Install-Package NuGetPowerTools

Добавьте его как зависимость к вашему пакету, затем в сценарии install.ps1 вы можете вызвать:

Add-Import "\Path\To\Import.targets" $project.ProjectName
Set-MSBuildProperty "MyPropertyName" "MyPropertyValue" $project.ProjectName

$value = Get-MSBuildProperty "MyPropertyName" $project.ProjectName

Ознакомьтесь с кодом на странице https://github.com/davidfowl/NuGetPowerTools для получения дополнительной информации.

person Kiliman    schedule 30.06.2011
comment
Примечание для будущих читателей: в новых версиях NuGet это автоматически включается путем добавления файла .targets в папку tools вашего пакета. - person Chris Pfohl; 12.09.2014
comment
Спасибо. Я думаю, что в будущем я начну с версии NuGet XY.... - person Kiliman; 12.09.2014
comment
Ага. Они проделывают большую работу по совершенствованию инструмента. - person Chris Pfohl; 12.09.2014
comment
@Crisfole: «включить это»: включить что? ;) - person Torben Koch Pløen; 29.05.2015
comment
Позволяет интегрировать цели сборки. - person Chris Pfohl; 29.05.2015

Скотт Хансельман сделал это на mix11. Его метод заключался в том, чтобы выгрузить проект (используя DTE), изменить его с помощью PowerShell, а затем перезагрузить (снова используя DTE).

http://channel9.msdn.com/Events/MIX/MIX11/FRM09

person Damian Powell    schedule 29.06.2011