1

n層のスマートクライアントアプリケーションを開発しています。アプリケーションのクライアント部分は2つの層に分割されています。データを取得してインターフェイスに提供するインターフェイスアプリケーションおよびクライアントビジネスライブラリ。データは、クライアントの接続に応じて、WCFサービスnet.tcpおよびhttpのコレクションを介して提供されます。

私の問題は、インターフェイスが(必要に応じて)wcfサービスを認識しないことです。構成system.serviceModelバインディング情報は、exeではなくlibの構成内に格納されます。system.serviceModelセクションをexe構成にコピーしない限り、アプリケーションはエンドポイントを見つけることができません。

したがって、app.configファイルをコピーするビルド前イベントを作成できます。

attrib -r "$(ProjectDir)app.config" copy "$(SolutionDir)Domain\Client\app.config" "$(ProjectDir)"

しかし、率直に言って、これはがらくたであり(そのストレートコピーはマージされません)、私はそれをより良い方法で動作させたいと思っています....何かアイデアはありますか?ありがとう

4

1 に答える 1

4

configSource要素を使用して、外部構成ファイルから関連セクションをインポートしようとしましたか? このディスカッションの最後の回答は、あなたにとって有効な解決策を提供します。

その議論から引用:

<!-- WCF Configuration Mappings in app.config -->
<system.serviceModel>
  <bindings configSource=".\CommonConfig\ServiceBindings.config" />
  <client configSource=".\CommonConfig\ServiceClient.config" />
</system.serviceModel>

ServiceBindings.config:

<?xml version="1.0" encoding="utf-8" ?>
<bindings>
  <netTcpBinding>
    <binding ... />
  </netTcpBinding>
</bindings>

ServiceClient.config (短縮):

<?xml version="1.0" encoding="utf-8" ?>
<client>
  <endpoint ...>
      ...
  </endpoint>
</client>
于 2009-08-12T17:15:51.257 に答える