2

Visual Studio 2005 で C# ソリューションを使用しています。特定の環境向けにプロジェクトをビルドし、Visual Studio から参照を手動で削除し、新しいものを名前は同じですが、URLを変更します。

Web 参照を手動で追加するこのプロセスをそれほど面倒ではないようにしたいと考えています。

構成マネージャーに、デバッグ構成とリリース構成、開発、運用前、および運用構成に加えて、それぞれが特定の環境に関連付けられた正しい Web 参照を決定するようにしたいと考えています。

ビルド構成に応じて、Web 参照が正しく作成される preBuild イベント (おそらく .bat ファイル) を作成することを考えていました。

これを行う方法がわかりません。それについていくつか質問があります:

1)プロパティが異なる「app.config」ファイルを作成できます

<setting name="MyService_serviceagent" serializeAs="String">
      <value>developmentEnvironmentURL</value>
</setting>

環境によって異なり、選択した構成に応じて適切な app.config ファイルをコピーできました。

これにより、Web 参照から Reference.cs ファイルが再生成されますか? (そうではないと思います)。インターフェイスが変更されていなくても、これは問題になるでしょうか。それとも、クラスを再生成したい場合にのみ Web 参照を手動で再生成すれば十分でしょうか?

2)これを行うのは悪い考えですか?または、決定された環境を指すソリューションを構築したいときに、対応する Web 参照を削除して追加する必要があることを受け入れる方が簡単ですか?

読んでくれてありがとう : )

よろしく。

4

1 に答える 1

4

1 つのプロジェクトに Web 参照があり、特定の環境用にプロジェクトをビルドする必要がある場合に変更する必要があります。Visual Studio から参照を手動で削除し、同じ名前の新しい参照を追加しますが、URL を変更します。[...] Web 参照が正しく作成される preBuild イベントを作成することを考えていました。

それは良い解決策でも保守可能な解決策でもないと思います。変更がすべて URL である場合、参照を再度追加する必要があると考える理由を説明できますか? web.config でサービス URL を変更できないのはなぜですか?

とにかく、2 つの個別の参照が必要な場合は、両方を追加して、各サービス参照に独自の構成を持たせることができます。最終的に、これらのサービス参照を別のライブラリに配置して、メイン プロジェクトから参照することができます。次に、サービスを必要とするプロジェクトで、使用する実装をコードで選択します (これは、たとえば、プロジェクトごとの環境変数に依存する可能性があるため、コンパイル時に決定するか、構成値だけで適切なサービスが選択されるようにすることができます)。実行時)。

3 つ目の解決策は、参照を作成せずにClientBase<T>、実行時にプロキシを作成する場所を利用することです。

于 2013-04-23T09:59:04.637 に答える