2012-05-10 14 views
0

プロジェクトには、MyNamespace.MyConfigという名前のカスタム構成セクションクラスがあります。クラスは、C#ライブラリMyNamespace.MyAssembly.dllに格納されます。ファイル名が競合するカスタムApp.configセクション

プロジェクトにはコンソールアプリケーションもあります。クライアントは、これをdllと同じ方法、つまりMyNamespace.MyAssembly.exeと呼びたいと考えています。

App.configファイルには、以下のdefinitonがあります

<section name="myConfigSection" type="MyNamespace.MyConfig, MyNamespace.MyAssembly"/> 

今の問題は、それが間違ったアセンブリで見ているため、アプリケーションは、のMyConfigクラスを見つけられないということである - exeファイルに。

最初のアイデアは、アセンブリの名前についてのより具体的なことだったので、のConfigurationManagerは、exeファイルでDLL内で見て、べきではないことを知っている:

<section name="myConfigSection" type="MyNamespace.MyConfig, MyNamespace.MyAssembly.dll"/> 

残念ながら、これは助けません、アプリケーションは、MyNamespace.MyAssembly.dllという名前のアセンブリを見つけることができないと言います。

これを機能させる唯一の方法は、アプリケーションアセンブリの名前をMyNamespace.MyAssembly.Consoleに変更することですが、クライアントはこれに同意しません。

ConfigurationManagerに、MyNamespace.MyAssembly.dllではなくMyNamespace.MyAssembly.exeのMyNamespace.MyConfigクラスを探す必要があることをどのように伝えることができますか?

答えて

1

残念ながら、.NETに.dllを最初に検索するよう指示する方法はありません。

<section name="myConfigSection" type="MyNamespace.MyConfig, MyNamespace.MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=...."/> 

のように、完全な名前であっても、同じアセンブリ名を共有しているため、現在のexeが最初にチェックされます。 プロジェクト名を変更せずに、設定プロジェクトに異なる出力アセンブリ名を使用することをお勧めします。

enter image description here

その後のapp.configに

<section name="myConfigSection" type="MyNamespace.MyConfig, MyNamespace.MyAssemblyConfig /> 

を使用しています。

関連する問題