In unserem Projekt haben wir einen benutzerdefinierten Konfigurationsabschnitt definiert, der ordnungsgemäß funktioniert, wenn in dem Projekt verwiesen wird. Jetzt versuchen wir, denselben Konfigurationsabschnitt aus einer DLL zu referenzieren, die als Referenz hinzugefügt wird. Aus dem Code in dieser DLL können wir problemlos auf ConfigurationManager.AppSettings zugreifen, erhalten aber Fehler beim Zugriff auf den Konfigurationseintrag.Laden benutzerdefinierter Konfigurationsabschnitt von DLL-Referenz
Web.config Code
<section name="mailManager" type="FullNamespace, NameSpace" />
<mailManager prop1="propVal1">
<prop2 key1="keyVal1" key2="keyVal2" key3="keyVal3" />
<prop3 key1="keyVal1" key2="keyVal2" />
</mailManager>
in der DLL, die es wirft den folgenden Fehler verweist, wenn Sie den Konfigurationsabschnitt erhalten versuchen. Dieser Abschnitt existiert sowohl in der Lösung für die DLL- als auch die Hauptlösungscodebasis.
var mailManagerConfigSection = ConfigurationManager.GetSection("mailManager") as EmailManagerConfigSection;
Der Fehler, den wir bekommen, ist Fehler CS0433: Der Typ 'EmailManagerConfigSection' existiert in beiden 'namespace1, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null' und ‚namespace2, Version = 1.0.0.0 , Kultur = neutral, PublicKeyToken = null '.
Die DLL-Referenz existiert in demselben Verzeichnis, in dem der Hauptcode ausgeführt wird. Gibt es trotzdem, dass die DLL auf den EmailManagerConfigSection-Hauptverweis verweist, der die Werte hat und nicht, was lokal für die DLL ist, die null ist? Wir möchten keine dll.config-Datei einführen.
Dank Charles, als ich sah die ConfigurationManager.AppSettings ["AsVal"] Einträge bekommen, so war ich hoffnungsvoll, dass ich so etwas ähnliches konnte, aber ich kann verstehen, warum das nicht möglich ist. Schätze deine Zeit. –
kein Problem, froh zu helfen! –