Abhängigkeiten von Referenzen nicht kopiert, um die Ausgabe-Verzeichnis
Ich habe eine CommonUtils lib habe ich gebaut und in eine dll-Datei-Referenz, die ich von einigen meiner Projekte. CommonUtils hängt log4net.dll die als Datei-Referenz und Kopie-local=true, wenn CommonUtils.dll gebaut wurde. log4net.dll und CommonUtils.dll sind nicht im GAC.
Alles funktioniert in MyWorkingProject, wo ich nur eine Datei Verweis auf CommonUtils.dll - log4net.dll zeigt sich in der Ausgabe-Verzeichnis (da es eine Abhängigkeit von CommonUtils.dll aber nicht aus verwiesen MyWorkingProject).
Jedoch wenn ich ein neues Projekt erstellen, fügen Sie einige "unittests": MyWorkingProjectTest und Projekt-Referenz MyWorkingProject und dann Datei-Referenz CommonUtils.dll wieder hier (möchte ich nutzen, um einige der CommonUtils) dann nach Gebäude log4net.dll das ist eine Abhängigkeit, die sowohl in der Projekt-Referenz und in der Datei als Referenz auch nicht in das Ausgabeverzeichnis kopiert.
Kann jemand klären, was ist hier passiert? Funktioniert der compiler nicht wissen, welche der log4net.dll Dateien sollte es greifen? Gibt es etwas, was mache ich hier falsch? Sollte ich dies in irgendeiner anderen Art und Weise für die log4net.dll kopiert zu werden, explizit?
Macht es einen Sinn, dass ich explizit zu verweisen log4net macht es?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist by-design. Sie müssen denken, über die Auswirkungen, die automatische Vererbung von Referenzen verursachen würde. Zwar kann man logischerweise sehen, was die Referenzen werden sollte, gibt es keine solche Unterscheidung für den compiler. Sie könnten-zumindest theoretisch-am Ende reproduzieren Rahmen und einen guten Teil Ihres OS, wenn es ging den ganzen Abhängigkeitsbaum.
Es ist definitiv ein Schmerz, und ich Stimme dir zu und verstehe Ihre frustration, aber ich gehe davon aus, dass Microsoft nicht in der Lage war zu finden, die eine logische Weg, dies zu tun ansonsten.
Ich glaube, wenn Sie nicht hinzufügen log4net als Referenz in Ihrem Projekt wird es nicht kopiert.
Wenn ich habe eine ähnliche situation in der Vergangenheit, erhielt ich eine compiler-Warnung innerhalb von Visual Studio sagt mir, dass ich brauchte, um einen Verweis hinzufügen, um die abhängigen Bibliothek.
Erhalten Sie eine solche Warnung beim kompilieren? Wenn ja, befolgen Sie die Ratschläge, die es gibt, und Sie sollten finden, Log4net kopiert, um Ihre Ausgabe-Verzeichnis.