2010-07-30 3 views
8

Ich habe eine Silverlight 4-Lösung, die eine sehr lange Zeit dauert, um von VS2010 und der MSBuild 4-Befehlszeile zu erstellen.Warum dauert die MSBuild-Aufgabe ResolveProjectReferences wirklich lange?

Die Lösung enthält 42 Projekte, eines ist ein Silverlight-Anwendungsprojekt, ein Webanwendungsprojekt und der Rest sind Klassenbibliotheken.

Die MSBuild diag Übersicht zeigt diese Aufgaben geraume Zeit nehmen ...

29891 ms ResolveAssemblyReferences     68 calls 
115609 ms CopySilverlightApplications    1 calls 
131547 ms ValidateXaml        36 calls 
425688 ms ResolveProjectReferences     68 calls 
634031 ms Build          71 calls 

Die Projektabhängigkeiten sind recht gut eingerichtet, und die Build-Reihenfolge sieht vernünftig. Ich habe alle Projekte in einem einzigen Ausgabeordner kompilieren, und alle referenzierten haben CopyLocal = false.

Es scheint der schlimmste Täter ist das ResolveProjectReferences, aber warum sollte es so lange dauern?

Antwort

2

Haben Sie die Codeanalyse beim Build aktiviert? Wenn ja, versuchen Sie es zu deaktivieren. Hatte ein ähnliches Problem. Nach dem Deaktivieren der Code-Analyse läuft der Build ca. 5 mal schneller.

0

ResolveProjectReferences muss jedes referenzierte Projekt erstellen. So ist es möglich, dass einige Projekte mehrfach erstellt werden.

Verwenden Sie Dateiverweise und einen zentralen Erstellungsvorgang, um dieses Problem zu beheben.

i used this in a project once

reduzierten wir unsere Buildtime von 12 Minuten bis 3 Minuten.