2009-07-30 8 views
16

Piszę C# .NET 2.0 .dll, który jest wtyczką do Larger application. Projekt Visual Studio dla mojego modułu ma plik app.config, który jest kopiowany do MyProj.dll.config wzdłuż strony MyProj.dll.Czytanie pliku dll.config (nie app.config!) Z modułu wtyczki

Planuje się, że plik MyProj.dll.config zostanie poddany edycji po wdrożeniu .dll. Próbuję odczytać moje ustawienia z tego zmodyfikowanego pliku lokalnego. Próbowałem wyciągając LocalFilesSettingsObject i zmieniając jego nazwę aplikacji do mojego .dll tak:

 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(); 

To nie działa. Staram się owijać głowę wokół całego bałaganu .NET Settings. Chciałbym przepis na to zadanie. Chciałbym również link do jasnego wyjaśnienia (z przykładami), w jaki sposób ustawienia mają działać. NET 2.0

Odpowiedz

22

Musisz samodzielnie załadować x.dll.config (z interfejsem API konfiguracji). Cała automatyczna obsługa plików (w tym .Settings) dotyczy wszystkich plików machine.config/y.exe.config/user-settings.

Aby otworzyć plik konfiguracyjny o nazwie:

  • Reference System.Configuration.dll montaż.
  • Korzystanie System.Configuration
  • Tworzenie kodu takiego:

    Configuration GetDllConfiguration(Assembly targetAsm) { 
        var configFile = targetAsm.Location + ".config"; 
        var map = new ExeConfigurationFileMap { 
        ExeConfigFilename = configFile 
        }; 
        return ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None); 
    } 
    
2

1- otwartego pliku app.config w Visual Studio

2- w "Konfiguracja" dodaj swój tag konfiguracje w tagu "appSettings" jak poniżej:

<configuration> 
    <appSettings> 
     <add key="UserName" value="aaa"/> 
     <add key="Password" value="111"/> 
    </appSettings> 
</configuration> 

3- w kod C#

var appConfig = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location); 
string userName = appConfig.AppSettings.Settings["UserName"].Value; 
string password = appConfig.AppSettings.Settings["Password"].Value; 

i nie zapomniał dodać to 2 usings dla "konfiguracji ConfigurationManager" i "Zgromadzenie"

  • użyciu System.Configuration;
  • przy użyciu System.Reflection;

jeśli System.Configuration nie pojawi, należy dodać odniesienia „System.Configuration” w odnośnikach

4- można zaktualizować konfiguracji dla dll jak poniżej:

  • otworzyć plik "MyProj.dll.config"
  • następnie zaktualizować konfiguracje
+0

Dzięki Mohamad! Przeczytałem wiele z tych postów, a twój jest jedynym, który działał! –