2011-06-29 8 views
6

Pracuję nad pakietem nuget, który skonfiguruje bieżący projekt do używania standardu wersjonowania zespołów mojej firmy. Mam to zrobić wszystko, co chcę (do tej pory) płynnie oprócz dodania niestandardowego kroku kompilacji.Dodawanie niestandardowego kroku kompilacji przy użyciu pakietu nuget

Historycznie dokonano tego ręcznie, edytując bezpośrednio plik .csproj i dodając kilka nowych znaczników do xml. Są ...

  • Property Group
  • docelowa

To faktycznie dodaje je pomyślnie, ale zrobiłem to poprzez edycję pliku XML, zamiast za pośrednictwem obiektu EnvDTE w parametrze $ w install.ps1. Ale pojawia się komunikat, pytający, czy chcę odrzucić moje zmiany.

Dodałem $project.Save() do mojego skryptu tuż przed wprowadzeniem zmian i to pozbywa się wyskakującego okienka, a ja po prostu mówię mi, że projekt się zmienił i pytam, czy chcę go ponownie załadować. Co jest lepsze, ale wciąż nie do końca doskonałe.

Czy jest lepszy sposób to zrobić?

Odpowiedz

9

Można również skorzystać z pakietu NuGetPowerTools napisany przez Davida Fowler (Nuget Lead Developer).

Install-Package NuGetPowerTools 

Dodaj go jako zależność do pakietu, a następnie w skrypcie install.ps1 można nazwać:

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

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

Sprawdź kod na https://github.com/davidfowl/NuGetPowerTools aby uzyskać więcej informacji.

+1

Uwaga dla przyszłych czytelników: nowe wersje NuGet automatycznie włączają tę funkcję dodając plik '.targets' do folderu' tools' pakietu. – Crisfole

+1

Dzięki. Myślę, że w przyszłości zacznę od "As of NuGet version X.Y ...". – Kiliman

+0

Yup. Robią świetną robotę rozwijając narzędzie. – Crisfole

3

Scott Hanselman zrobił to w mix11. Jego technika polegała na rozładowaniu projektu (przy użyciu DTE), zmodyfikowaniu go za pomocą PowerShell, a następnie przeładowaniu (ponownie za pomocą DTE).

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

+2

Założę się, że Scott używa słowa "kupa" w swoim demo. –

Powiązane problemy