Warum muss ich die Kette Referenz Baugruppen?
-
09-09-2019 - |
Frage
Mein Projekt verweist auf eine Baugruppe (nennen es X), die eine andere Assembly verweist (nennen es Y).
Wenn ich versuche, mein Projekt zu kompilieren, erfordert es, dass es Montag Y. Referenz sollte Warum das so ist? Ich erhalte die folgende Fehlermeldung auf der Linie, wo Baugruppe X Bezug genommen wird:
vom Typ ‚DevExpress.XtraEditors.XtraForm‘ ist in einer Baugruppe definiert das ist nicht referenziert. Sie müssen einen Verweis auf Assembly hinzufügen ‚DevExpress.Utils.v9.1, Version = 9.1.2.0, Culture = neutral, PublicKeyToken = b88d1754d700e49a‘.
DevExpress.XtraEditors.XtraForm
ist die Montage Y.
Warum ist das? Ich habe dieses Verhalten nicht gesehen.
Lösung
Das ist an Ort und Stelle gewesen. Sie werden nur diese bei der Kompilierung, wenn Sie ein Objekt verwenden, die Methoden / Eigenschaften / Mitglieder etc von der Montage Y bekommt.
Der Grund ist, weil .NET nicht auf Montag X verlassen kann, um sicherzustellen, es in der Lage sein wird, die richtige Symbol und Metadaten Informationen zu erhalten.
Andere Tipps
Dies ist seit jeher das Verhalten als wie sonst wird der Compiler Ihr Projekt erstellen, wenn es nicht einen Verweis auf alle Abhängigkeiten hat?
Die Baugruppen, die von Ihrem Projekt verwiesen werden, die für Ihre Anwendung zu arbeiten. Sie verwenden Arten von diesen Baugruppen und ohne diese Art der Anwendung nicht aufbauen können. Noch wichtiger ist, ohne diese Typen Ihre Anwendung kann nicht ausgeführt werden.
Betrachten wir nun, dass jede Assembly, die Sie Bezug auf die gleiche Weise wie die Assembly gebaut wurde und verlangt, dass alle seine referenzierten Assemblys vorhanden sein und berücksichtigt. Dies hat eine Kettenreaktion erzeugen, die lästig sein kann, aber das Endergebnis ist, dass, sobald Sie Ihre Anwendung ausführen, die CLR alle Baugruppen, die es braucht, um die Anwendung auszuführen.