0

1 つのコンソール アプリケーションと 2 つのライブラリを含むソリューションがあります。

ライブラリには、私のdata.configの例として2つの異なるapp.configがあります

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="OutputFileFolder" value="c:\\log" />
    <add key="OutputIndexFile" value="c:\\log\index.xml" />
  </appSettings>
</configuration>

そして、このライブラリクラスでは、コンストラクターに

_indexPath = ConfigurationManager.AppSettings["OutputIndexFile"]; 

Data.configしかし、メイン コンソール アプリケーションからファイルをロードするにはどうすればよいですか (これはメインの構成ファイルである必要があります)。

4

3 に答える 3

4

dll プロジェクトの構成ファイルは、実行時には関係ありません。コンソール アプリケーション プロジェクトの構成ファイル (存在する場合) が使用されます。

2 つの別々のプロジェクトで構成ファイルを使用する場合は、それを 2 番目のプロジェクトへのリンクとして追加するか、ビルド後のイベントを使用してコピーすることができます。ただし、これらはどちらも少しハッキーに見えます。

于 2012-08-01T14:53:03.560 に答える
2

ライブラリには、実際には関連付けられた構成ファイルはありません。実行可能ファイル (この場合はコンソール アプリケーション) の下で動作します。

ライブラリ内のコードがアクセスできるようにするには、すべての構成をapp.configアプリケーションのファイルに配置する必要があります。

于 2012-08-01T14:53:32.363 に答える
1

Configuration複数の呼び出しから複数のインスタンスを作成することにより、複数の構成ファイルをロードできますConfigurationManager.OpenMappedExeConfiguration(構成ファイルをファイルマップに追加すると、グローバルファイルが自動的に追加され、を指定しますConfigurationUserLevel.None

何かのようなもの:

var fileMap = new ExeConfigurationFileMap {
                    ExeConfigFilename = Path of dll's config file
             };

var cfg = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
var result = cfg.AppSettings["OutputIndexFile"];
于 2012-08-01T14:57:10.830 に答える