2009-07-30 21 views
16

Larger application'a bir eklenti olan bir C# .NET 2.0 .dll yazıyorum. Benim modül için görsel stüdyo projesi MyProj.dll tarafında bir MyProj.dll.config kopyalanır bir app.config dosyası vardır.Bir eklenti modülünden dll.config (app.config!) Okuma

Plan, MyProj.dll.config .dll dağıtıldıktan sonra düzenlenecektir. Ayarlarımı bu değiştirilmiş yerel dosyadan okumayı deniyorum. Bu gibi benim .dll için uygulamanın adı LocalFilesSettingsObject dışarı çekerek ve değişen çalıştı adres: çalışmıyor Yani

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

. Kafamı tüm .NET Ayarları karmaşası etrafına sarmak için uğraşıyorum. Bu görevi bitirmek için bir tarif istiyorum. Ayrıca, ayarların .NET 2.0

cevap

22

'da nasıl çalışacağıyla ilgili net bir açıklamaya (örneklerle) bağlantı da isterim. x.dll.config'u (Yapılandırma API'sı ile) kendiniz yüklemeniz gerekir. Tüm otomatik dosya işleme (.Settings dahil), hepsi machine.config/y.exe.config/user-settings ile ilgilidir.

  • Referans System.Configuration.dll montaj:

    adlandırılmış yapılandırma dosyası açın. System.Configuration
  • gibi kod oluşturma kullanma

  • : "yapılandırma" etiketi visual studio

    2- yılında

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

1- açık app.config dosyasında Apple Şifre "appSettings" etiketindeki yapılandırmalar aşağıdaki gibi:

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

kodunuzu C#

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

içinde 3- ve "Meclis" System.Configuration kullanılarak

  • "ConfigurationManager" için ve bu 2 usings eklemeyi unuttuğu yok; System.Reflection kullanarak
  • ;

System.Configuration gelmezse, sen Referanslar referans "System.Configuration" eklemelisiniz

4- Eğer feryat dll için yapılandırmaları güncelleyebilirsiniz:

  • dosyayı açmak "MyProj.dll.config"
  • ardından yapılandırmaları güncellemek
+0

Teşekkürler Mohamad! Bu yazıların çoğunu okudum ve senin çalışman sadece senin! –