Frage

Die Dinge einfach halten, gehen Sie an, dass keine DLLs im lokalen Ordner- oder Konfigurationsdateien beteiligt sind, oder Publisher-Richtlinien oder die benutzerdefinierte Auflösung. Der einzige Ort, auf das DLLs referenziert ist, ist in der GAC.

Wie entscheidet Fusion, welche Version der DLLs im GAC für (alle anderen Dinge gleich ist), was ist die Reihenfolge der Priorität?

Beispielsweise, wenn in meinem Projekt eine DLL-Version 10.5.0.0 referenziert habe. Würde es die DLL von Version 10.5.0.0 oder 10.5.1.0 auswählen. Alternativ, wenn ich nur Version 10.4.0.0 im GAC hätte, würde es funktionieren oder einen Fehler werfen? Ändern diese Regeln, je nachdem, ob sich der Major / Minor / Build / Revisionsteil ändert?

Wie unterscheidet sich dies, wenn die Projektreferenz "bestimmte Version" auf true oder false eingestellt ist?

und wie unterscheidet sich dies, wenn die Referenz eine DLL-Referenz- oder Projektreferenz ist?

Ich vermute, es gibt eine MSDN-Website irgendwo an, wie dies funktioniert, aber ich kann es nicht finden. Ich möchte nicht das Verhalten überschreiben, ich möchte nur wissen, was das Standardverhalten ist.

War es hilfreich?

Lösung

Es ist auf MSDN in wie die Laufzeit dokumentiert Suchen Sie die Baugruppen . Insbesondere wird der GAC nur durchsucht, wenn die Baugruppe mit einem starken Namen geladen wird. Es kann immer noch Publisher-Richtlinien geben, an der Sie eine andere Versammlung "umleiten", aber es gibt keine automatischen Regeln an Ort und Stelle.

Meiner Meinung nach ist der GAC nur etwas, das von Microsoft für das .NET-Framework verwendet werden sollte, und Sie können viel Schmerz entfernen, indem Sie Ihre Bewerbung oder Bibliothek ohne Verwendung des GAC (außer dem .NET-Framework natürlich) verteilen. .

Die Referenzierung einer bestimmten Version einer Baugruppe ist eine Erstellungszeiteigenschaft und wirkt sich nicht auf das Laufzeitverhalten aus. Wenn jedoch eine Montage-Referenz in eine ausführbare Datei erstellt wird, wird die Version in der ausführbaren Datei gespeichert, und zur Laufzeit wird diese spezifische Version geladen (nachdem die Regeln der Montage umgeleitet wurden).

So summieren Sie es, um .NET, um eine andere Version der angeforderten Montage zu laden, muss eine Montage-Weiterleitung vorhanden sein. Ihre Bewerbung kann Umleitungen in der Datei app.config bereitstellen, und der GAC kann Publisher-Richtlinien haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top