2013-11-22 5 views
6

Diese Frage wurde von another issue ausgelöst, mit dem ich gerade beschäftigt war. Es gibt eine verwaltete Bibliothek, MyAssembly.dll, die auf .NET 4.0 abzielt. Es hat seine eigene MyAssembly.dll.config Datei mit einigen <bindingRedirect> Anweisungen. Ich glaube, die .config Datei wurde entweder von Compliler oder NuGet Paketmanager generiert, da ich es nicht manuell erstellt habe.Was ist der Zweck der .config-Datei für eine DLL-Bibliothek Assembly?

Die Sache ist, die Bindungsanweisungen werden ignoriert, wenn die DLL von einer Client-App geladen wird (RegAsm.exe in meinem Fall, aber ich verifizierte dies auch mit einer einfachen Konsole .NET-App). Ich musste sie aus der .config-Datei der DLL in die .config-Datei der Client-EXE-Anwendung verschieben, um von der .NET-Laufzeitumgebung gelesen und korrekt aufgelöst zu werden.

Die Frage: Was ist der Zweck einer .config-Datei für eine verwaltete Bibliothek Assembly (.DLL), überhaupt? Ist es irgendwie am Prozess des Ladens der Bibliotheksbaugruppe beteiligt?

Antwort

5

Es gibt keinen "Zweck". Der Consumer der Bibliothek kann die Einstellungen aus der .dll.config in ihre eigene .exe.config oder web.config kopieren.

Die Datei .dll.config gibt Visual Studio einfach einen Speicherort für die Konfiguration der Bibliothek.


Bedenken Sie, dass im Allgemeinen eine einzelne Bibliothek von mehreren Anrufern mit jeweils unterschiedlicher Konfiguration verwendet werden kann. Es macht eigentlich nicht viel Sinn, im Allgemeinen, für die Bibliothek die Einstellungen zu diktieren.