2013-08-31 9 views
6

Sto provando a impostare regole globali per la mia squadra. Stiamo usando VS2012 con TFS per i nostri progetti C#. Vorrei eliminare alcuni degli avvertimenti e anche considerare alcuni degli avvertimenti come errori. Ho trovato il modo di farlo a livello di progetto - proprietà del progetto -> scheda build.Sopprime l'avviso a livello di soluzione. Trattare l'avviso come errore a livello di soluzione

Ma abbiamo una soluzione con più di cento progetti e sto cercando un modo più semplice per impostare tali regole a livello globale.

+0

Ho paura che tu abbia a scrivere una macro per questo perché quelle impostazioni non sono mantenute nella soluzione. – rene

+0

È possibile utilizzare lo stesso file ruleset per più progetti: presumo che lo stiate già facendo e volete semplicemente evitare di specificare manualmente quel file in ogni progetto? –

+0

Ho appena iniziato a scavare più a fondo in queste cose. Quindi devo dire che non ne sono veramente sicuro. Ho pensato che i set di regole sono definiti per l'analisi del codice e che è qualcosa di diverso dagli avvertimenti del compilatore. Finora non ho toccato i set di regole ... – jumbo

risposta

5

Una soluzione è solo un contenitore (piuttosto stupido) per i progetti. Se lo apri in un editor di testo, vedrai rapidamente che non puoi estenderlo, aggiungi solo progetti/elementi.

Quello che vuoi è uno o più file msbuild comuni che specificano tutte le opzioni necessarie per il compilatore/linker/qualunque strumento tu usi e Import in ogni singolo progetto. Lo usiamo da anni ed è molto conveniente (anche se parte della praticità è probabilmente anche un piccolo strumento per generare file di progetto per importare automaticamente le proprietà globali in modo da non doverle manomettere manualmente)

In alternativa è possibile aggiungere un file a livello di macchina, cercare $ (MSBuildToolsPath) \ Microsoft.CSharp.targets per vedere dove posizionare tali file. Non ho intenzione di copiare/incollare il contenuto qui, ma le prime righe in pratica controllano se ci sono file defindati dall'utente ad esempio $ (MSBuildExtensionsPath) \ $ (MSBuildToolsVersion) \ $ (MSBuildThisFile) \ ImportBefore e se è così sono tutto è stato importato prima di tutte le comuni risorse di msbuild. Allo stesso modo, la fine di Microsoft.CSharp.targets contiene una logica simile per importare i file dopo tutte le comuni risorse di msbuild.

+0

Quindi vedo che dovrò scrivere qualche script per aggiornare comunque tutti i file di progetto (il file wide machine non è un'opzione per ora), ho ragione? – jumbo

+0

che in effetti sembra l'unico modo (a parte modificare manualmente tutti i file); non dovrebbe essere così difficile però: tutto ciò che devi fare è inserire una singola linea come '' proprio prima dell'esistente '' line - Suggerirei di usare un percorso realtive per common.props – stijn

Problemi correlati