2012-04-24 8 views
5

Sto utilizzando SlowCheetah per trasformare un file di configurazione XML in un progetto Web di Visual Studio su un server CI. In Visual Studio 2010 l'XML si trasformerà perfettamente durante la pubblicazione, ma sul server CI non si verifica alcuna trasformazione. Invece ho solo il file di configurazione originale non trasformato. Ho seguito le istruzioni fornite da Sayed Ibrahim's Blog dove spiega di aggiungere il file SlowCheetah dll e target nella soluzione e di puntare il file di progetto per utilizzare quei file. Ho apportato questa modifica e ho fatto una pubblicazione in Visual Studio solo per assicurarmi che funzionasse e così è stato. Ma quando costruisco il progetto sul server CI, ho lo stesso problema che avevo prima.SlowCheetah non produce file di configurazione trasformato sul server CI

La mia ipotesi è che abbia qualcosa a che fare con il mio script MSBuild che sto usando per costruire il mio progetto sul server CI. Devo aggiungere qualcosa a questo per dire al mio progetto di usare SlowCheetah? Il mio script di build è il seguente:

<Project DefaultTargets="DoPublish" 
xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
<PropertyGroup> 
    <SourceFileRootFolder>$(CCNetWorkingDirectory)\Code</SourceFileRootFolder> 
    <WebFolder>DCSIWeb\DCSIWeb</WebFolder> 
    <ReleaseFolder>C:\Builds\BuildFolder</ReleaseFolder> 
</PropertyGroup> 
<PropertyGroup Condition ="$(CCNetWorkingDirectory) == ''"> 
    <SourceFileRootFolder>C:\Builds\ProjectWorkingDirectory\Code</SourceFileRootFolder> 
    <ReleaseFolder>C:\Builds\BuildFolder</ReleaseFolder> 
</PropertyGroup> 
<Target Name="CleanSource"> 
    <Message Text="Removing all source files from $(ReleaseFolder)" /> 
    <RemoveDir Directories="$(ReleaseFolder)" /> 
</Target> 
<Target Name="DoPublish"> 
    <CallTarget Targets="CleanSource"/> 
    <MSBuild Projects="$(SourceFileRootFolder)\DCSIWeb.sln" Targets="Clean;Build" /> 
    <MSBuild Projects="$(SourceFileRootFolder)\$(WebFolder)\DCSIWeb.csproj" 
     Targets="_CopyWebApplication;_BuiltWebOutputGroupOutput;TransformWebConfig" 
     Properties="OutDir=$(ReleaseFolder)\" ></MSBuild> 
</Target> 

Lo script MSBuild costruisce fondamentalmente il progetto e pone il progetto a "c: \ Builds \ BuildFolder". Quando guardo nella cartella di build dopo che la compilazione è stata eseguita, vedo il file .config di cui ho bisogno ma non è stata eseguita alcuna trasformazione. È lo stesso file che era prima.

+0

Potete scrivermi? sayedha [at] {Microsoft} [dotcom] –

+2

Ho incontrato lo stesso problema ... da quello che ho visto finora il programma di installazione di SlowCheetah colloca il codice in una posizione specifica dell'utente. Quindi, se si installa SlowCheetah come se stessi e si esegue l'elemento della configurazione con un altro utente, è possibile che SlowCheetah non possa essere eseguito perché non riesce a trovare il proprio codice. Questo è quello che ho scoperto fino ad ora ... non ho ancora funzionato da solo in esecuzione in TeamCity;) –

+1

Jack, ha seguito le istruzioni sul mio blog linkato sopra? –

risposta

0

Non mi piace sempre questo tipo di risposte, ma ti consiglio di utilizzare Config Transformation Tool. È un altro strumento per utilizzare le trasformazioni Xdt ma è molto più semplice di Cheetah e un po 'intelligente (parametri di supporto), quindi un'attività MSBuild seria. Può essere semplicemente memorizzato in soluzione o ripristinato automaticamente sul server CI tramite il pacchetto NuGet. Hai solo bisogno di o call utility con params. Sono un fan di Xdt da quando è stato prodotto e ho trovato questi strumenti più facili da usare nei miei progetti.

Problemi correlati