Ich verstehe, dass .NET-Laufzeit immer zuerst in GAC referenzierte Assemblys und dann in den lokalen Ordnern suchen wird. Gibt es in Web.Config eine Einstellung, die diese Reihenfolge umkehrt?Wie bekomme ich .NET, um zuerst nach Assemblys in lokalen Ordnern anstatt nach GAC zu suchen?
Antwort
Nein. Dies ist nicht möglich. Wenn eine DLL der gleichen Version wie die in Ihrem Programm referenzierte DLL in der GAC vorhanden ist, wählt die CLR immer diese. Es gibt keine Möglichkeit, dieses Verhalten zu überschreiben.
Ich bin mir nicht sicher, ob es etwas gibt, das die Suchreihenfolge tatsächlich umkehrt, aber je nach Ihren Anforderungen können Sie in assembly binding redirection schauen, die Ihnen ziemlich viel Kontrolle darüber gibt, welche Versionen von Baugruppen geladen werden.
Dies wird ändern, welche Version Sie binden. Die Version, die Sie letztendlich auswählen, unterliegt jedoch den GAC-Regeln, die ich erwähnt habe. – JaredPar
In der Tat, klärte die Antwort ein wenig, um dies zu reflektieren –
Weitere Informationen. auf Arbeitsumgebungen in this SO thread.
JaredPar ist richtig - die GAC wird immer zuerst für die Montage abgefragt werden. Wenn Sie jedoch wie ich sind und möchten, dass die DLL in der GAC live bleibt und weiterhin debuggt, können Sie ein Buildskript hinzufügen, um Ihre PDB-Datei im selben Ordner abzulegen wie die Assembly im GAC C: \ windows \ assembly \ gac_msil \ assembly.name_ [Token des öffentlichen Schlüssels]).
Hat das etwas mit Sicherheit zu tun? – codeulike
@codeulike, ich glaube, es hat mehr mit Service zu tun. Ich weiß weniger über das Warum und mehr über die Fähigkeit, dies zu tun, weil ich viel Zeit damit verbracht habe, dieses Verhalten zu unterlaufen, bevor ich erkannte, dass es einfach nicht möglich war. – JaredPar
Deshalb ist der GAC böse, in meinem Buch. – Benjol