構成ファイルから構成設定を読み取る必要がある.NET dllがあります。通常、設定ファイルは DLL と同じディレクトリに配置されます。しかし、DLL が GAC されている場合、設定ファイルを読み取るにはどうすればよいですか。GAC には DLL しか配置できず、設定ファイルではないためです。
3 に答える
ユーザーはDLLを構成する必要がありますか?その場合、DLLは、独自の構成ではなく、app.configファイルの構成設定を使用する必要があります。app.configファイルは、アプリケーションと同じディレクトリに保存する必要があります。そうでない場合は、いくつかの異なる方法をとることができます。machine.configファイルに変更を加えて、DLLがそこで見つけられるようにすることができます。私はこれをしません。または、構成を設定クラスに保存することもできます。これらは構成を介してオーバーライドできますが、デフォルトは属性を介して設定クラス用に生成されたコードに設定されるため、デフォルトが必要な場合は、構成ファイルがなくてもDLLに影響はありません。
Gac'ed dll がアプリケーションのパスから読み取る tvanfosson に同意します。ただし、この方法でパスである dll に通知することもできます。
System.Configuration.ExeConfigurationFileMap fileMap = new System.Configuration.ExeConfigurationFileMap();
fileMap.ExeConfigFilename = "THE PATH TO THE CONFIG";
System.Configuration.Configuration cfg =
System.Configuration.ConfigurationManager.OpenMappedExeConfiguration(fileMap, System.Configuration.ConfigurationUserLevel.None);
string thevalue=cfg.AppSettings.Settings[variable].Value;
AppDomain.CurrentDomain.BaseDirectory
DLLライブラリはそれ自体では実行されないため、彼を呼び出している実行可能ファイルディレクトリを取得するだけで利用できます
何かのようなもの:
var appDomain = AppDomain.CurrentDomain.BaseDirectory;
string sFileName = appDomain.Replace("\\bin\\Debug", "");
sFileName = sFileName + "Config\\config.xml";
ここで私の実行可能ファイルはフォルダー内にあり、フォルダー内にはxml構成ファイルがある場所bin\Debug
というフォルダーが あります。したがって、構成ファイルへの相対パスが次のように提供されますConfig
config.xml
sFileName
\bin\Debug\Config\config.xml