Qualcuno sa se è possibile aggiungere qualcosa a un file nuspec in modo tale che quando un pacchetto viene installato tramite NuGet un evento di pre o post build in un progetto?Configurare il pacchetto NuGet per aggiungere un evento di build quando installato
risposta
penso che la modifica di proprietà PostBuildEvent dell'utente è il modo sbagliato di procedere su come aggiungere un'azione di post-generazione per un progetto. Credo che il modo consigliato sia di inserire la tua azione personalizzata in una destinazione MSBuild importata nel file di progetto. A partire da NuGet 2.5, se si include una cartella 'build' nel pacchetto (allo stesso livello del contenuto e degli strumenti) e contiene un file {packageid} .targets o {packageid} .props, NuGet aggiungerà automaticamente un'importazione a il file di progetto quando si installa il pacchetto.
Ad esempio, si dispone di un pacchetto chiamato MyNuGet. Si crea un file di build \ MyNuGet.targets contenenti:
<?xml version="1.0" encoding="utf-8" ?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="MyNuGetCustomTarget" AfterTargets="Build">
<Message Importance="high" Text="Message from MyNuGetCustomTarget. Configuration: $(Configuration)" />
</Target>
</Project>
Questo crea un obiettivo personalizzato che è configurato per l'esecuzione dopo il target di costruzione standard. NuGet gestirà l'inserimento dell'Importazione all'installazione e rimuoverlo durante la disinstallazione.
Non per il file .nuspec, ma è possibile per install.ps1
che è possibile aggiungere al pacchetto utilizzando nuspec. Ecco quello che sto facendo (non so se è il modo migliore per farlo, ma funziona):
param($installPath, $toolsPath, $package, $project)
$project.Properties | where { $_.Name -eq "PreBuildEvent" } | foreach { $_.Value = "copy `"`n`$(ProjectDir)Web.`$(ConfigurationName).config`" `"`$(ProjectDir)Web.config`"" }
Sembra interessante, ci proverò! –
puoi aiutarmi a risolvere http://stackoverflow.com/questions/25840375/how-to-add-prebuildevent-in-install-ps1-in-nuget – IloveIniesta
questo è un modo un po 'più pulito per impostare un evento di costruire da un install.ps1 lo script powershell nel pacchetto NuGet:
$project.Properties.Item("PostBuildEvent").Value = "your build event here"
puoi aiutarmi a risolvere questo? Http: //stackoverflow.com/questions/25840375/how-to-add-prebuildevent-in-installazione-ps1-in-nuget – IloveIniesta
non ha visto la voce aggiunta al progetto dopo l'installazione ma viene chiamata. NICE TY – workabyte