Situation: Projekt A referenziert Projekt B wird von Projekt A referenziert. Projekt C wird von Projekt B referenziert, wird aber erst zur Laufzeit geladen und hat somit keine 'echte' Abhaengigkeit zu Projekt B, wird aber trotzdem - wie ich es erwartet habe - in das Ausgabeverzeichnis von Projekt B kopiert.
Somit ergibt sich: ProjB\bin\ProjC.dll und ProjA\bin\ProjB.dll, aber leider wird Projekt C nicht in das Ausgabeverzeichnis von Projekt A kopiert.
Ich brauch aber (wegen des dynamischen Ladens, was ja auch zur Laufzeit von Projekt A innerhalb von ProjektB passiert) ProjC.dll auch bei ProjektA! Wie kann ich dieses Verhalten erreichen?
Nachtrag: Ich möchte nicht manuell die Referenz von ProjektA auf ProjektC setzen! Das führt zwar zum 'richtigen' Ergebnis, aber ist nicht Sinn er Sache von Referenzen.
Generell bietet es sich an ein gemeinsames Ausgabeverzeichnis für alle Assemblies in den Projekteigenschaften anzugeben. Damit entfällt auch dein von dir genanntes Problem.
Client und Server-Projekte sollen auch nicht gemischt werden, aber alle Client-DLLs und alle Server-DLLs kannst du doch jeweils in ein gemeinsames Verzeichnis legen.
dass überhautpt Referenzen kopiert werden, liegt daran, dass deine Referenzen in den Properties CopyLocal (Lokale Kopie bei einem deutschen VS) == true haben. Wenn Du C nach A kopieren willst, dann mach das doch über einen PostBuild-Event (in den Projekteigenschaften unter Buidl kannst Du Pre- und PostBuild Steps eintragen). Stell Dir das PostBuild Skript als Batchskript vor, ein einfaches xcopy reicht. Um das Verzeichnis usw. zu bestimmen, bietet das VS da ein paar kleine Makros an. Dann kannst Du einfach deine Dll per xcopy ins Ausgabeverzeichnis von A kopieren.
zu überlegen ist dann aber auch, ob Du Dir nicht gleich ein Deploy-Verzeichnis einrichtest, in das Du die Ausgabe aller Projekte per PostBuild Step reinkopierst. Dann hast alles immer an einem wohldefinierten Platz.
EDIT in Bezug auf deinen Kommentar:
...waehrend des Builds aufzuloesen.
Dann würde ich Dir ein Make-Tool empfehlen, denn Dateien kopieren mag zukünftig nicht das Einzige sein, was während des Builds erledigt werden muss. Und dann streust Du die Kopiertasks nicht in mehrere PostBuild-Steps, sondern machst Dir ein anständiges Makefile. Folgende fallen mir spontan ein:
MSBuild (ist ja bei VS schon mit dabei, eine .csproj ist ein msbuild-Skript)