Ich hatte das gleiche Problem heute wieder.
Vor allem, dank Jon Cage und dem verknüpften Artikel in seinem Beitrag zu diesem Thema, see above (or below). +1 !!! Es hat mein Problem gelöst.
Aber weil ich Dinge wie toggle them as appropriate for your case
hasse, was nichts anderes bedeutet als trial and error
, habe ich einige Tests gemacht, da ich 2 Lösungen mit einer guten Anzahl von C++/CLI-Projekten in jedem habe.
Hier ist mein Rat und Erklärung dafür:
Für alle Selbst erstellt Versammlungen (die haben ‚lokale Kopie‘ auf true gesetzt):
„Allgemeine Eigenschaften“ -> „Rahmen und Referenzen "->" Referenzen "-> Wählen Sie eine Referenz.
Auf dem Eigenschaftsblatt auf der rechten Seite -> "Build-Eigenschaften" -> "Use Abhängigkeiten in Build"
- (aus dem verknüpften Msdn Forum Artikel von Jon Cage Post kopiert)
Setzen Sie diesen Parameter Use Dependencies In Build
zu "false" durch Abwählen.
Es funktioniert als "Referenzweiterleitung", siehe Beispiel unten.
TECHNISCHER HINTERGRUND:
-> bedeutet 'Referenzen'
Methode 1:
in meiner Lösung SwCore:
A.1.1 network->tools
, A.1.2 network->basics
.
A.2.1 tools->basics
.
A.3.1 drives->basics
, A.3.2 drives->tools
, A.3.3 drives->network
A.4.1 ...
mit "Use Abhängigkeiten in Build" auf true gesetzt, kann die Referenz A.1.2 weggelassen werden, da sie enthalten in A.2.1.
alle Dateien werden in swcore \ release \
== Problem geschaffen:
in Lösung DDI:
B.1.1 DDI_hardware->DDI_job
, B.1.2 DDI_hardware->drives
B.2.1 DDI_job->basics
, B.2.2 DDI_job->tools
, B.2.3 DDI_job->job
DDI_job
wird in DDI \ Release \ und mit "U.D.InBuild" auf true gesetzt erstellt, es enthält basics
.
DDI_hardware
wird erstellt ... und mit "U.D.InBuild" auf true festgelegt, enthält es DDI_job->basics
.
DDI_hardware verweist auch auf Grundlagen von SwCore \ Release \
== >> doppelte Referenz auf Grundlagen und andere. VS sieht 2 Dateien und kann nicht erkennen, dass es sich um denselben Inhalt handelt.
Methode 2:
A.1.1 network->tools
, A.1.2 network->basics
.
A.2.1 tools->basics
.
Wenn "U.D.InBuild" auf FALSE gesetzt ist, kann die Referenz A.1.2 nicht weggelassen werden, da sie nicht von A.2.1 weitergeleitet wird.
== funktioniert, weil keine Assembly andere tiefere Abhängigkeiten enthält, so dass es keine Konflikte geben wird.
BTW: Dies zwingt Sie, alle notwendigen Referenzen für jedes Projekt anzugeben, so dass Sie auch einen Überblick haben, was Sie in Ihrem Projekt verwenden.
Letzte Info: Ich kann nicht sicher sagen, ob meine Erklärung richtig ist. Vielleicht so. sonst kann bestätigen.
Nun, das funktioniert nicht ... Müssen auch "Use ..." Eigenschaften für referenzierte * .dll..Falls machen. Aber in dieser Situation können Sie nicht verwenden, dass * .dll ... Es ist nicht elagant Lösung, aber was ich fand, ist ein leeres * .dll-Projekt erstellen Verweis auf diese * dll (in meiner Situation hinzufügen log4.net dll zu diesem Dummy-Projekt) .Dann, wenn diese DLL (log4.net) von einem anderen Projekt verwenden wollte Fügen Sie das Dummy-DLL-Projekt anstelle der direkten Referenz auf die DLL (log4.net) hinzu. – NoviceAndNovice