0

プロジェクトには、MyNamespace.MyConfigという名前のカスタム構成セクションクラスがあります。クラスはC#ライブラリMyNamespace.MyAssembly.dllに保存されます。

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

App.configファイルには次の定義があります。

 <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に変更することですが、クライアントはこれに同意しません。

MyNamespace.MyAssembly.exeではなくMyNamespace.MyAssembly.dllでMyNamespace.MyConfigクラスを検索するようにConfigurationManagerに指示するにはどうすればよいですか?

4

1 に答える 1

1

残念ながら、この状況では、最初に.dllを検索するように.NETに指示する方法はありません。のようなアセンブリのフルネームでも

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

同じアセンブリ名を共有しているため、現在のexeが最初にチェックされます。プロジェクト名を変更せずに、構成プロジェクトに別の出力アセンブリ名を使用することをお勧めします。

ここに画像の説明を入力してください

次に、

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

app.configで。

于 2012-05-10T18:51:01.653 に答える