2009-05-05 6 views

Antwort

17

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.

+0

Hat das etwas mit Sicherheit zu tun? – codeulike

+0

@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

+5

Deshalb ist der GAC böse, in meinem Buch. – Benjol

2

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.

+1

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

+0

In der Tat, klärte die Antwort ein wenig, um dies zu reflektieren –

1

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]).

Verwandte Themen