2

プロジェクトには多数のアセンブリがあります。

  • Contract.Common ; 一般的に使用されるすべてのが含まれていますDataContract
  • Contract.Sync ; その他の機能
  • Contrct.Task ; その他の機能
  • 製品が進化するにつれて、より多くの機能を備えたさらに5ダースのアセンブリ。

一般に、Contract.Commonは、他のWCFコントラクトアセンブリによって参照されていました。いくつかのベストプラクティスに従って、WCF Architecture&Evoltion / Versionをさらに読んでください。すべてのコントラクトに使用する、NamespacePrefixのような定数の静的クラスがあります。

共通契約から独立した新しい契約を開発しているのですが、初めてです。それをContract.NewStuffと呼びましょう

通常どおり、新しいコントラクトは、共通のコントラクトライブラリ内の名前空間プレフィックス定数を再利用します(つまり、それへの参照が必要です)。

Webサービスクライアントの場合、コントラクトアセンブリを参照し、それを使用してさまざまなWebサービスに接続して呼び出します。

ケシトン

Contract.NewStuffは、コンパイル時に定数に共通ライブラリのみを使用するため(ランタイムアセンブリはありません)、クライアントがContract.Commonアセンブリも参照する必要がないようにするにはどうすればよいですか?

私の共通契約はたった20KBのアセンブリであることを理解しているので、心配する必要はありません。しかし、Contract.NewStuffを使用している300,000台以上のマシンでは、そのアセンブリの送信、将来のリリースでの更新などにリソースを浪費する必要がある理由がわかりません...


アップデート1

[リンクとしてファイルを追加]オプションを使用しました。参照なし、定数を編集するための単一の場所。

4

1 に答える 1

0

定数を持つクラスを新しいアセンブリに移動して、Contract.CommonとContract.NewStuffがそれを参照するようにすることができます。定数はC#コンパイル時にILコードに埋め込まれ、実行時に必要になるたびに定数アセンブリから読み取られることはないため、コンパイル後に「定数を含むアセンブリを破棄」することもできると思います。
他のオプションとして、定数クラスをContract.NewStuffアセンブリに「リンク」することもできます。この場合、両方のプロジェクトでファイル定数クラスの重複はありません。リンクとしてファイルを追加

于 2012-08-30T10:56:08.703 に答える