2016-04-11 12 views
2

私はUserLogin dllを書きました。 dllは、いくつかのデフォルトパラメータでApp.Configファイルを使用しています。私はより良いファイルシステムの可読性のために設定ファイルをUserLogin.Configに改名しました。dllを参照として追加するプロジェクトにDLL設定ファイルを追加するにはどうすればよいですか?

ユーザーのログインが必要な新しいアプリケーションを作成しました。新しいアプリケーションへの参照としてUserLogin.dllを追加しました。問題は、設定ファイルが参照で追加されなかったことです。 Visual Studioを使用してアプリケーションを実行するには、bin \ debugフォルダに手動で追加する必要があります。

設定の一部として設定ファイルを追加しているため、このような問題はありません。

私は開発環境で実行できるように、新しいアプリケーションに設定ファイルを追加する正しい方法は何ですか?

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <appSettings> 
     <add key="IsTestEnvironment" value="false" /> 
     <add key="AllowedUserForTestEnvironment" value="ehh" /> 
     <add key="EnableLogging" value="false" /> 
    </appSettings> 
</configuration> 

UserLogin.configファイルからの読み込みクラス:

public static class ConfigurationReader 
{ 
    private static AppSettingsSection _appSettings; 

    public static AppSettingsSection AppSettings 
    { 
     get 
     { 
      if (_appSettings == null) 
      { 
       var userPreferencesConfigFileMap = new ExeConfigurationFileMap(); 
       userPreferencesConfigFileMap.ExeConfigFilename = "UserLogin.config"; 
       var userPreferencesConfig = ConfigurationManager.OpenMappedExeConfiguration(userPreferencesConfigFileMap, ConfigurationUserLevel.None); 
       _appSettings = (AppSettingsSection)userPreferencesConfig.GetSection("appSettings");           
      } 

      return _appSettings; 
     } 
    } 

    public static bool IsTestEnvironment 
    { 
     get 
     { 
      return bool.Parse(AppSettings.Settings["IsTestEnvironment"].Value); 
     } 
    } 

    public static string AllowedUserForTestEnvironment 
    { 
     get 
     { 
      return AppSettings.Settings["AllowedUserForTestEnvironment"].Value; 
     } 
    } 

    public static string EnableLogging 
    { 
     get 
     { 
      return AppSettings.Settings["EnableLogging"].Value; 
     } 
    } 
} 

UserLogin.dllを使用して新しいアプリケーション:

はUserLogin.configファイルです

enter image description here

+1

設定には制限がありますが、これはEXEでのみ有効です。あなたがそれについて考えるなら、複数のプログラムでライブラリを使用することができ、異なる設定を持つことになります。技術的には、app.configエントリを手動でEXEプロジェクトのapp.configにマージする必要があります。楽しいことではありません。正しい方法は、ライブラリをEXEのコードで構成させることです。または、よく知られている場所から自分自身をロードする.xmlファイルを使用してください。 –

+0

あなたの説明をありがとうございます – ehh

答えて

3

問題は、 configファイル名をカスタム名に変更します。

理想的には、DLLは両親のExes App.configの構成を使用でき、dllを使用しているアプリケーション(exe)のApp.configファイルにappsettingsを追加するだけです。

なぜこの方法で分割しましたか?これは良い習慣ではありません。

これで分けたので、これはカスタムXML設定ファイルを持っているのと同じです。

このような場合、XCOPYを使用してPost-BuildコマンドまたはPre-Buildコマンドを追加して、configファイルを正しい出力ディレクトリにコピーして、DLLがそれをピックアップできるようにすることができます。

を右クリックして、プロジェクトのプロパティ、XCOPY/Y

のようなコマンドを追加し、ビルド前イベントに行く "$(SolutionDir)MyProjectと\ myFile.xxx" "$(outputDirの)"

は、あなたに注意してください。必要に応じてパスとファイル名を変更する必要があります。

+1

私はあなたのことを正しく理解していれば、dllのApp.Configにすべてを書き込むほうがよいと言っています。このdllを使用するアプリケーションごとに、AppSettingsの部分をApplication AppConfigファイルにコピーする必要があります。 – ehh

+0

はい、それは正しいです。カスタムファイルとアプリケーション設定をexes app.configで削除してから、通常の設定APIが通常どおり動作します – NatarajC

関連する問題