2011-02-03 10 views
14

私は2つのプロジェクトを持っている:別のアセンブリからapp.configを読み取る方法は?

  • コンソールプロジェクト(TEST.EXE)
  • クラスライブラリプロジェクト(Test.Data.dll)

マイクラスライブラリプロジェクトはapp.configファイルが含まれています。

var config = ConfigurationManager.OpenExeConfiguration("Test.Data.dll"); 
config.ConnectionStrings.ConnectionStrings[0].Name; // LocalSqlServer 
// seems to be the wrong assembly. 

そして:私はDLLのにアクセスすることができますどのように

var config = ConfigurationManager.OpenExeConfiguration("Test.Data.dll.config"); 
// invalid exePath 

を私はクラスライブラリから設定にアクセスしたいので、私が試したコンソールプロジェクトから

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <connectionStrings> 
    <add name="TestEntities" connectionString="metadata=res://*/DBNews.csdl|res://*/DBNews.ssdl|res://*/DBNews.msl;provider=System.Data.SqlClient;provider connection string=&quot;{0}&quot;" providerName="System.Data.EntityClient" /> 
    </connectionStrings> 
</configuration> 

app.config

+0

正解はここに記載されています。それは動作します http://stackoverflow.com/questions/53545/get-the-app-config-of-another-exe –

答えて

10

DLLには、実行時に独自のapp.configがありません。 app.configは、Entity Frameworkデザイナー専用です。

実行中、DLLはアプリケーションのapp.configファイルから値を読み取ろうとします。 Entity Framework接続の場合、接続情報をアプリケーションのapp.configにコピーする必要があります。

5

.NETは、実行アセンブリのApp.configファイルを1つのみ読み込みます。サテライトアセンブリにApp.configファイルがある場合、実行アセンブリによって解析されません。

サテライトアセンブリのApp.configから設定を取得するには、それらの設定を実行中のアセンブリのApp.configに移動(コピー)する必要があります。

関連する問題