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 in
War es hilfreich?

Lö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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top