CA statico rende più lento il mutch di build solution. Nel mio caso> 2x più lento rispetto a CA. Possiamo disabilitarlo, ma è una cattiva decisione perdere il suo potere. Quindi cosa possiamo fare?Miglioramento dell'analisi del codice
Prima consente di vedere come funziona CA.
Si crea una soluzione. Ad ogni progetto build dopo msbuild Compile target viene chiamato fxcopcmd.exe con percorsi agli assembly che devono essere analizzati. fxcopcmd. genera un log di CA xml che viene utilizzato da VS (o forse da un flusso di output). fxcopcmd.exe carica gli assembly (veloce) e analizza i suoi in modo sincrono, quindi viene caricata solo una CPU e 3 (nel mio caso) non stanno facendo nulla. Solo dopo che la CA è terminata, viene creato il prossimo progetto nella catena di dipendenze del progetto.
Quindi il punto debole in CA era che possiamo migliorarlo - per forzarlo a lavorare in parallelo per utilizzare tutte le CPU.
vedo tale soluzione
Per rendere fxcopcmd.exe falso che porterà i parametri da MSBUILD, ricordare e immediatamente riferire al msbuild che tutto è ok e non ci sono stati errori (tramite CA xml.log, o file riuscito, o forse stream ..). Quindi MSBUILD costruirà il prossimo progetto e in quel momento chiameremo real fxcopcmd.exe con parametri salvati ... se MSBUILD chiamerà fxcopcmd.exe sul prossimo progetto - chiameremo ancora una volta fxcopcmd.exe ... quindi ci sarà pochi processi che caricheranno tutte le CPU. Dopo il completamento di fxcopcmd.exe, possiamo chiamare il nostro target MSBUILD che chiamerà solo la destinazione CA da microsoft.common.targtets senza compilazione e il nostro falso fxcopcmd.exe segnalerà immediatamente i risultati (CA è terminata in quel momento e abbiamo il log) a MSBUILD-VS.
Cosa ne pensi? Questo accelera CA? Perché Microsoft non ha creato questo tipo di personale e utilizza solo una CPU in CA?
Perché non creare una configurazione di compilazione diversa e abilitarla solo in questo? Quindi puoi scegliere quando costruire con esso o meno. –