Lesen dll.config (nicht app.config!) Von einem Plugin-Modul
-
05-07-2019 - |
Frage
Ich schreibe eine C # .NET 2.0 DLL, dass ein Plug-in zu einem Größere Anwendung . Das Visual Studio-Projekt für mein Modul hat eine app.config-Datei, die auf einen MyProj.dll.config an der Seite von MyProj.dll kopiert wird.
Der Plan ist, dass MyProj.dll.config bearbeitet wird, nachdem die DLL bereitgestellt wird. Ich versuche, meine Einstellungen aus dieser modifizierten lokalen Datei zu lesen. Ich habe versucht, die LocalFilesSettingsObject herausziehen und zu ändern ist es Anwendungsnamen meiner DLL wie folgt aus:
Properties.Settings config = Properties.Settings.Default;
SettingsContext context = config.Context;
SettingsPropertyCollection properties = config.Properties;
SettingsProviderCollection providers = config.Providers;
SettingsProvider configFile = Properties.Settings.Default.Providers["LocalFileSettingsProvider"];
configFile.ApplicationName = Assembly.GetExecutingAssembly().GetName().Name;
config.Initialize(context, properties, providers);
config.Reload();
Das funktioniert nicht. Ich kämpfe meinen Kopf um das gesamte .NET-Einstellungen Chaos zu wickeln. Ich hätte gerne ein Rezept wie diese Aufgabe zu beenden. Ich würde auch einen Link zu einer klaren Erklärung mag (mit Beispielen), wie Einstellungen sollen .NET 2.0
arbeiten inLösung
Sie müssen die x.dll.config
laden (mit der Konfigurations-API) selbst. Alle die automatische Datei (einschließlich der .Settings
) Handhabung ist alles über machine.config / y.exe.config / Benutzereinstellungen.
Wenn Sie eine benannte Konfigurationsdatei öffnen:
- Referenz
System.Configuration.dll
Montage. - Verwenden
System.Configuration
-
Erstellen Sie Code wie:
Configuration GetDllConfiguration(Assembly targetAsm) { var configFile = targetAsm.Location + ".config"; var map = new ExeConfigurationFileMap { ExeConfigFilename = configFile }; return ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None); }
Andere Tipps
1- offen app.config Datei in Visual Studio
2 in der "Konfiguration" Tag fügen Sie Ihre Konfigurationen in tag "appSettings" als Gebrüll:
<configuration>
<appSettings>
<add key="UserName" value="aaa"/>
<add key="Password" value="111"/>
</appSettings>
</configuration>
3 in Ihrem Code c #
var appConfig = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location);
string userName = appConfig.AppSettings.Settings["UserName"].Value;
string password = appConfig.AppSettings.Settings["Password"].Value;
und nicht dieses Bild 2 usings hinzufügen vergessen für „Configuration“ und für „Assembly“
- mit System.Configuration;
- using System.Reflection;
, wenn die System.Configuration nicht zeigen, müssen Sie den Verweis „System.Configuration“ in den Referenzen hinzufügen
4- Sie die Konfigurationen für die DLL aktualisieren können als Gebrüll:
- Öffnen Sie die Datei " MyProj.dll.config "
- aktualisieren Sie Ihre Konfigurationen