2012-09-14 20 views
5

Uso SlowCheetah per trasformare app.configs. Ho una soluzione multi-progetto in cui uno dei progetti esegue un evento post-build in cui l'output del bin viene copiato altrove. Ho scoperto che SlowCheetah fa le trasformazioni dopo l'evento post-build, quindi l'app.config che sto copiando è la versione pre-trasformata.SlowCheetah viene eseguito dopo eventi post-build

Qualcuno ha un suggerimento su come posso eseguire la mia copia dopo la trasformazione di SlowCheetah? Ciò richiederà che scrivo un'attività di compilazione personalizzata?

+0

Ho trovato una soluzione alternativa. Non è elegante, ma funziona. Ho creato un progetto fittizio e ho impostato la sua dipendenza per creare dopo il progetto che avevo eventi post-compilazione. Ho spostato l'evento di copia post-build dal progetto originale a questo nuovo progetto fittizio. Funziona perché SlowCheetah ha fatto il suo lavoro. – ScottC

risposta

4

Se si utilizza msbuild 4.0 per la creazione di progetti, è possibile agganciare a target slowcheetah con i nuovi attributi AfterTargets BeforeTargets.

Non so che cosa esattamente bersaglio nome che si desidera agganciare dopo, ma questo codice è potuto ha dato il concetto di base come fare questo

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <Target Name="Some_Target_Name" AfterTargets="TransformAllFiles" > 
      <Message Text="= Script here will run after SlowCheetah TransformAllFiles ="/> 
    </Target> 
<Project> 

Modificato: ho installato SlowCheetah e ha scoperto che l'attributo AfterTargets dovrebbe essere "TransformAllFiles" . Basta impostare la dipendenza di destinazione AfterTargets="TransformAllFiles"

2

risposta di Alexey conduce alla soluzione corretta ma qui è in pieno:

  • Fare clic con il progetto e selezionare Unload Project
  • Ora fare clic con il progetto e selezionare Edit [your project name].csproj
  • Scorrere verso il basso e rimuovere il target di nome AfterBuild e aggiungere questo attributo AfterTargets="TransformAllFiles"
  • Spostare il messaggio costruire azioni in questo obiettivo usando il comando Exec:

Un esempio:

<Target Name="AfterBuild" AfterTargets="TransformAllFiles"> 
<Exec Command="ECHO Hello PostBuild World!" /> 
</Target> 
0

ho urtato anche questo problema ... ha deciso di aggiornare alla versione più recente di SlowCheetah (corrente 2.5.8) e sembra che questo problema sia stato risolto! Niente più problemi nell'usare eventi post-build per implementare un progetto con XML trasformato!

Dopo il processo di aggiornamento del pacchetto NuGet, ho avuto un problema strano, anche se ... le trasformazioni non stavano più accadendo. Modificando il progetto come suggerito da Naeem Sarfraz, ho trovato che la sezione PropertyGroup di SlowCheetah era posta alla fine di .csproj.

Si trattava solo di spostarlo in alto, vicino alle altre sezioni del Property Group, e ora funziona come un incantesimo!

0

Se è necessario copiare/spostare altri file .config (diversi da web.config) dopo la compilazione prima di pubblicare qui è come può essere fatto con Visual Studio 2013 (non l'ho testato su versioni precedenti) . Questa sezione può essere aggiunta alla fine del file .csproj subito prima del tag di chiusura </Project > e verrà attivata appena prima che MSDeploy avvii il processo di pubblicazione.

<Target Name="MoveConfigFile" BeforeTargets="MSDeployPublish"> 
    <Move 
     SourceFiles="$(IntermediateOutputPath)Package\PackageTmp\ThirdPartyApp.config" 
     DestinationFolder="$(IntermediateOutputPath)Package\PackageTmp\bin" 
     OverwriteReadOnlyFiles="true" 
    /> 
</Target> 

L'azienda per cui lavoro acquistato un prodotto di terze parti che ha bisogno di avere un file config nella cartella bin insieme al suo assemblaggio per poter lavorare.

Allo stesso tempo, abbiamo bisogno di elaborare file con estensione config del prodotto e essere in grado di spostarlo nella cartella bin dopo trasformazioni.

La cartella $ (IntermediateOutputPath) Package \ PackageTmp contiene l'intera applicazione che verrà copiata sul server di destinazione.

Problemi correlati