Domanda

Così ho un CommonAssemblyInfo.cs legate in tutti i progetti di mia soluzione e viene generata dinamicamente dal mio rake / tonno bianco script che non viene controllato in controllo del codice sorgente.

Ho anche una CommonAssemblyInfo.cs.local per l'uso quando non v'è rubino a disposizione, soprattutto per essere utilizzato da sviluppatori.

E 'possibile avere un compito MSBuild o qualcosa che viene eseguito prima una qualsiasi delle altre compilation progetto che copiare CommonAssemblyInfo.cs.local a CommonAssemblyInfo.cs prima di provare a compilare la mia soluzione? Odio dover avere un comando che dovete sapere solo circa e tipo, al fine di aprire e buidl la soluzione in Visual Studio.

UPDATE Così ho finito per usare un file batch come una soluzione a livello pre-build eventi come descritto qui: Soluzione a livello di eventi pre-build? , si verifica per vedere se CommonAssemblyInfo.cs esiste e se non copie CommonAssemblyInfo.cs.local a CommonAssemblyInfo.cs solo utilizzando un semplice file batch.

È stato utile?

Soluzione

Questa è la soluzione ho finito con.

Ho ogni progetto nel link soluzione in un CommonAssemblyInfo.cs che è automagicamente generati per me dai miei script di build (rastrello + tonno bianco).

Dato che non posso controllare CommonAssemblyInfo.cs in controllo del codice sorgente, creo un CommonAssemblyInfo.cs.local.

Soluzione semplice: creare go.bat che copia CommonAssemblyInfo.cs.local a CommonAssemblyInfo.cs che sviluppatori devono eseguire la prima volta che il check-out il progetto prima di aprire la soluzione in VS

.

Per puramente ragioni politiche, se ho fatto questo popolo avrebbero avuto attacchi sibilante su di me fare le cose "non standard". soluzione complessa segue:

Ho creato un progetto nella soluzione chiamata prebuild quale ogni progetto nella soluzione dipende. Questo forze dell'ordine build per essere tali che questo progetto è stato costruito prima. Questo progetto contiene un evento di pre-compilazione che chiama il seguente file batch:

echo verifying CommonVersionInfo.cs exists
cd
IF NOT EXIST ..\..\..\CommonAssemblyInfo.cs COPY ..\..\..\CommonAssemblyInfo.cs.local ..\..\..\CommonAssemblyInfo.cs

Così ora eventuali sviluppatori che scelgono di tenere la testa sotto la sabbia può checkout del progetto e beatamente aprirlo in VS ignaro che gli script di build esistono affatto.

Altri suggerimenti

Stai parlando di compilazione nel VS IDE, o la compilazione tramite Team Build? Se si sta parlando di Team Build, quindi è possibile utilizzare l'evento "dopo Get" come un luogo per utilizzare lo standard "copia" compito MSBuild. Se si sta parlando di VS IDE, allora è ancora possibile utilizzare la "copia" compito msbuild.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top