Statische CA lässt die Lösung langsamer bauen. In meinem Fall> 2x langsamer als ohne CA. Wir können es deaktivieren, aber das ist eine schlechte Entscheidung, seine Macht zu verlieren. Was können wir tun?Verbesserung der Codeanalyse
Lassen Sie uns zuerst sehen, wie CA funktioniert.
Sie bauen Lösung. Bei jedem Projekt, das nach dem Msbuild-Kompilierungsziel erstellt wird, wird fxcopcmd.exe mit Pfaden zu Assemblys aufgerufen, die analysiert werden sollen. fxcopcmd. generiert CA-XML-Protokoll, das von VS (oder möglicherweise Ausgabestrom) verwendet wird. fxcopcmd.exe lädt Assemblys (fast) und analysiert sie synchron, so dass nur eine CPU geladen ist und 3 (in meinem Fall) nichts tun. Erst nachdem CA beendet ist, wird das nächste Projekt in der Projektabhängigkeitskette aufgebaut.
Also der schwache Ort in CA waren wir können es verbessern - es parallel dazu zwingen, alle CPUs zu verwenden.
ich eine solche Lösung
zu fälschen fxcopcmd.exe machen sehen, die Parameter von MSBUILD nehmen, sie erinnern und sofort msbuild berichten, dass alle in Ordnung ist, und es gab kein Fehler (über CA xml.log, oder erfolgreiche Datei, oder vielleicht Stream ..). Also wird MSBUILD das nächste Projekt erstellen und zu diesem Zeitpunkt werden wir real fxcopcmd.exe mit den gespeicherten Parametern aufrufen ... wenn MSBUILD fxcopcmd.exe beim nächsten Projekt aufrufen wird - wir werden noch einmal fxcopcmd.exe aufrufen ... so wird es geschehen wenige Prozesse, die alle CPUs laden. Nachdem die fxcopcmd.exe fertig ist, können wir unser MSBUILD-Ziel aufrufen, das nur CA-Ziel von microsoft.common.targtets ohne Kompilierung aufruft und unsere gefälschte fxcopcmd.exe meldet sofort Ergebnisse (CA ist zu diesem Zeitpunkt fertig und wir haben Log) zu MSBUILD-VS.
Was denkst du? Wird dies CA beschleunigen? Warum Microsoft hat nicht solche Mitarbeiter und verwenden nur eine CPU in CA?
Warum machen Sie nicht eine andere Build-Konfiguration und aktivieren Sie nur in diesem? Dann können Sie wählen, wann Sie damit bauen wollen oder nicht. –