Versioning CommonAssemblyInfo.cs e MSBuild
-
05-10-2019 - |
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.
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.