Wenn es dieselbe Versionsnummer wie die referenzierte DLL hat, wird der GAC verwendet.
Wenn Sie die Versionsnummer erhöhen, die Website unter Bezugnahme auf die neue Versionsnummer neu erstellen, die neue Version im Verzeichnis / bin ablegen, wird diese DLL verwendet.
Wenn Sie die Versionsnummer nicht ändern möchten, haben Sie ziemlich viel Pech.
Wenn .NET stark benannte Assemblys lädt, versucht es zunächst zu entscheiden, welche Versionsnummer verwendet werden soll. Dies geschieht zuerst über die Referenz, dann nach Herausgeberrichtlinien und dann nach Bindungsumleitungen in der Konfigurationsdatei.
Danach sucht es im GAC nach der Assembly, dann in einer beliebigen angegebenen Codebasis und prüft verschiedene Dateisystemordner auf die DLL. Wenn bei einem dieser Schritte die richtige Versionsbaugruppe gefunden wird, wird sie gestoppt.
Wenn Sie die Versionsnummer Ihrer stark benannten Assembly nicht ändern, findet .NET die ursprüngliche im GAC und hört auf zu suchen. Beachten Sie, dass die Angabe einer Codebasis für Ihre Assembly nur dann hilfreich ist, wenn Sie eine Codebasis für Ihre Assembly angeben, da sie angehalten wird, wenn eine gefunden wird, und wenn Sie zuerst auch eine neue Versionsnummer angeben.
Ich konnte den GAC mit der Assembly im Ordner \ bin mithilfe des
<codebase>
Elements überschreiben .Durch Angabe
<codebase version="1.2.3.4" href="https://stackoverflow.com/bin/MyAssembly.dll" />
in meiner Datei web.config kann ich meine Anwendung anweisen, diese Version anstelle der im GAC angegebenen Version zu verwenden.Vielleicht möchten Sie auch einen Blick auf das
<probing>
Element werfen, um die Montageorte anzugeben?quelle
Ich glaube, ich sage vielleicht das Gleiche wie Adam Sills, habe es aber für mein Verständnis umformuliert. Durch meine eigenen Tests sieht es so aus:
Ich hoffe das ist richtig ...
quelle
Sie können Bindungsinformationen in der Protokolldatei mit dem Assembly Binding Log Viewer (Fuslogvw.exe) anzeigen, der im Windows Software Development Kit (SDK) enthalten ist.
s
quelle