Ich habe eine große C # -Lösungsdatei (~ 100 Projekte) und versuche, die Erstellungszeiten zu verbessern. Ich denke, dass "Copy Local" in vielen Fällen für uns verschwenderisch ist, aber ich wundere mich über Best Practices.
In unserer .sln haben wir Anwendung A in Abhängigkeit von Baugruppe B, die von Baugruppe C abhängt. In unserem Fall gibt es Dutzende von "B" und eine Handvoll von "C". Da diese alle in der .sln enthalten sind, verwenden wir Projektreferenzen. Alle Assemblys sind derzeit in $ (SolutionDir) / Debug (oder Release) integriert.
Standardmäßig markiert Visual Studio diese Projektreferenzen als "Lokal kopieren", was dazu führt, dass jedes "C" für jedes "B", das erstellt wird, einmal in $ (SolutionDir) / Debug kopiert wird. Das scheint verschwenderisch. Was kann schief gehen, wenn ich "Lokal kopieren" ausschalte? Was machen andere Leute mit großen Systemen?
NACHVERFOLGEN:
Viele Antworten deuten darauf hin, dass der Build in kleinere SLN-Dateien aufgeteilt wird. Im obigen Beispiel würde ich zuerst die Foundation-Klassen "C" erstellen, gefolgt vom Großteil der Module "B" und dann einige Anwendungen. " EIN". In diesem Modell muss ich nicht-projektbezogene Verweise auf C von B haben. Das Problem, auf das ich dort stoße, ist, dass "Debug" oder "Release" in den Hinweispfad eingebrannt wird und ich meine Release-Builds von "B" erstelle. gegen Debug-Builds von "C".
Wie gehen Sie mit diesem Problem um, wenn Sie den Aufbau in mehrere SLN-Dateien aufteilen?
<Private>True</Private>
in einem csproj?
.sln
in kleinere bricht jedoch die Berechnung der automatischen Interdependenz von <ProjectReference/>
s durch VS. Ich bin selbst von mehreren kleineren .sln
s zu einem großen .sln
gewechselt, nur weil VS auf diese Weise weniger Probleme verursacht. Vielleicht geht das Follow-up also von einer nicht unbedingt besten Lösung für die ursprüngliche Frage aus? ;-)