2009-07-30 4 views
16

私はLarger applicationへのプラグインであるC#.NET 2.0 .dllを書いています。私のモジュール用のビジュアルスタジオプロジェクトには、MyProj.dllの横にあるMyProj.dll.configにコピーされたapp.configファイルがあります。プラグインモジュールからdll.config(app.config!ではなく)を読む

.dllが展開された後、MyProj.dll.configが編集されるという計画です。私はその変更されたローカルファイルから設定を読み込もうとしています。動作していない

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

:私はLocalFilesSettingsObjectを引き出し、それはこのように私の.dllにアプリケーション名です変更しようとしています。私は全体の.NET設定混乱の周りに私の頭を包んで苦労しています。この仕事を終えるためのレシピが欲しいです。また、.NET 2.0での設定がどのように機能するのかを明確に説明するためのリンクもあります。

答えて

22

(コンフィグレーションAPIを使用して)x.dll.configをロードする必要があります。すべての自動ファイル処理(.Settingsを含む)は、すべてmachine.config/y.exe.config/user-settingsに関するものです。

  • 参考System.Configuration.dllアセンブリ:

    は、名前の設定ファイルを開きます。
  • System.Configuration
  • を使用したようなコードを作成します。

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

の1- Visual Studioで開いてapp.configファイル

2-があなたを追加タグ「appSettings」の設定は次のようになります。

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

あなたのコードC#

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

で3-および "アセンブリ" System.Configurationを使用して

  • "のConfigurationManager" のためにと、この2 usingsを追加するのを忘れないでください。
  • using System.Reflection;参考文献に

System.Configurationが表示されていない場合、あなたは参照を追加する必要があり、「System.Configuration」

4 - あなたは怒鳴るようDLLの構成を更新することができます。

  • は、ファイルを開く "MyProj.dll.config"
  • は、あなたの構成の更新
+0

ありがとうMohamad!私はこれらの記事の多くを読んで、あなたのものだけが働いています! –

関連する問題