Hinzufügen einer ProjectReference zu einem Projekt, das sich nicht in derselben Lösung befindet

8

Beim Refactoring unserer Projekte und Lösungsdateien habe ich einige .sln-Dateien getrennt, um weniger Projekte zu enthalten.

Gelegentlich muss ich auf einige Projekte außerhalb des Bereichs der aktuellen .sln-Datei verweisen.

Zum Beispiel war mein Ausgangszustand das:

LÖSUNG A

  • PROJ A
  • PROJ B

Nach dem Refactoring würde es so aussehen:

LÖSUNG A_NEU

  • PROJ A

LÖSUNG B_NEU

  • PROJ B

Meine Frage ist - Ist es möglich, einen ProjectReference -Knoten zu einem Projekt hinzuzufügen, das nicht in derselben VS-Lösung definiert ist? (In meinem Fall haben PROJ A einen Projektverweis auf PROJ B ).

Wenn das auch möglich ist, wird das empfohlen?

Ich weiß, dass dies nicht von der VS IDE aus möglich ist, sondern nur durch manuelle Bearbeitung der .csproj Datei.

    
lysergic-acid 22.07.2012, 16:25
quelle

3 Antworten

13

Sie können das nicht tun. Eine Projektreferenz enthält eine identifizierende GUID für das referenzierte Projekt, die in der Lösungsdatei verwaltet wird, um Lösungsbuildoptionen und -abhängigkeiten zu verfolgen. Wenn Sie versuchen, auf ein Projekt zu verweisen, das nicht in der Lösung enthalten ist, wird Visual Studio sich beschweren.

Sie können der Assembly eine Dateireferenz hinzufügen, die von einem Projekt erzeugt wird, das natürlich nicht in der Lösung enthalten ist.

UPDATE: Da dies downvoted wird, verfeinere ich meine Antwort.

Obwohl es technisch möglich ist , eine Projektdatei zu erstellen, die auf ein anderes Projekt außerhalb derselben Lösung verweist, wird Visual Studio Ihnen nicht dabei helfen, dies einfach zu tun. Ein sehr guter Grund, warum es eine schlechte Idee ist, dies zu tun (was ich beobachtet habe) ist, dass die von Ihnen erstellte Lösungskonfiguration und Plattform (das referenzierende Projekt) ignoriert wird, wenn MSBuild beschließt, das referenzierte Projekt zu erstellen - die Standardkonfiguration und die in dieser referenzierten Projektdatei angegebene Plattform wird stattdessen verwendet. So können Sie mit einer Mischung von Binär-Typen in verschiedenen Ordnern enden.

    
lesscode 22.07.2012, 17:07
quelle
2

Fügen Sie das Projekt vorübergehend der Lösung hinzu, fügen Sie einen Verweis hinzu, entladen Sie das Projekt, dem jetzt eine Referenz hinzugefügt wurde, entfernen Sie das referenzierte Projekt, und laden Sie das Projekt mit der Referenz neu.

Wenn Sie das Projekt nicht entladen, wird die Referenz automatisch von Visual Studio entfernt, wenn das referenzierte Projekt entfernt wird.

Wie Sie wahrscheinlich feststellen können, sind Visual Studios dazu nicht geeignet und Sie sollten besser eine Build-Reihenfolge für die Lösungen definieren und stattdessen Assembly-Referenzen verwenden.

    
GrahamD 08.11.2015 17:46
quelle
0

Sie können definitiv ein Projekt zu einer Lösung A hinzufügen, die sich in der Lösung B befindet. Es gibt kein Problem damit. Aus meiner Erfahrung ist es nicht etwas, was ich normalerweise getan oder getan habe, aber manchmal muss es. Dies kann insbesondere bei großen Projekten der Fall sein, in denen Sie unterschiedliche Knoten Ihrer Architektur benötigen, um dieselbe Codebasis wiederzuverwenden.

Hoffe, das hilft.

    
Tigran 22.07.2012 16:34
quelle