-1

まず、クラス ライブラリがその構成を取得する方法は、参照元プロジェクトの構成から取得する方法であることを認識していると言っておきましょう。私の場合、参照プロジェクトは MVC Web アプリケーションです。

これは通常は理にかなっていますが、Web サービスへのアクセスを提供するためだけにクラス ライブラリが存在する場合は、そうではないと思います。Visual Studio には、サービス参照を右クリックして [サービス参照を更新] する機能があります。app.configこれにより、参照元プロジェクトの構成ファイルではなく、クラス ライブラリのファイルが更新されます。app.configファイルが単に無視される場合はあまり役に立ちません。

もちろん、新しいバージョンのapp.configファイルを別のプロジェクトのファイル (この例では) にコピーし続けることはできますweb.configが、それは面倒であり、忘れずに行う必要があります。さらに、構成設定をWebサービスプロジェクトに保持する方が意味的に優れていると思います。その Web サービスが URL を変更した場合、プロジェクトを参照するすべてのものに新しい URL を取得してもらいたいと思います。クラス ライブラリを参照する何かが別の URL を使用したい場合、その構成がクラス ライブラリの構成をオーバーライドする可能性がありますが、クラス ライブラリにはデフォルトの一連の設定が必要です。各参照プロジェクトの構成を変更する必要はありません。

これらすべてを念頭に置いて、参照元プロジェクトの構成の値を調べる代わりに、WCF エンドポイントなどのクラス ライブラリの構成を使用するように .NET を強制/ハック/何でもする方法はありますか?

4

2 に答える 2

0

基本的に、ビルド後のイベントでプロジェクトがビルドされるときに app.config ファイルを bin ディレクトリに手動でコピーし、値を手動で読み取るなど、多くの作業を行うことで、クラス ライブラリの app.config を作成することができます。それから、それらを Web サービス バインディングにプラグインします。ただし、私はあきらめて web.config ファイルにコピーし (この例では、Web アプリケーションを作成しているため)、Visual Studio から Web サービスを更新するたびに手動で更新することにしました。共有ライブラリにアクセスする複数の異なるアプリケーションが実際にある場合、これを行うことは依然として正当であると思います。なぜなら、そのライブラリが 1 つの Web サービスを参照するだけで、それが変更された場合は、.config代わりにそのライブラリのファイルを変更するだけで済むからです。すべての異なるアプリケーションの.configファイル。

なぜ VS が app.config というファイルを作成するのかは、非常に誤解を招くと思うので、私には謎です。実際には無視されるのに、このファイルの構成設定が読み取られるように見えます。より適切なファイル名は、「shouldBeCopiedIntoYourActualAppOrWeb.config」のようなものになります。

于 2013-03-14T10:01:26.023 に答える
0

申し訳ありませんが、これは動作方法ではありません。

サービスの場所やその他のパラメーターは、環境によって異なる場合があります。これらの変更は、環境の web.config に反映する必要があります。

于 2013-03-13T17:08:43.830 に答える