7

A と B の 2 つのプロジェクトがあるとします。A は B に依存します。これは次の 2 つの方法で指定できます。

  • A と B を同じソリューションに含め、B を A のプロジェクト依存関係として指定します。これは、A の msbuild プロジェクトに "ProjectReference" ノードとして表示されます。
  • B のコンパイル済み dll への参照を A の依存関係として含めます。これは、A の msbuild プロジェクトに「参照」ノードとして表示されます。

私の質問は、A のアセンブリをビルドしたら、これら 2 つの方法の最終出力に違いがあるかどうかです。

この関係をモデル化するいくつかの単純なプロジェクトを作成して比較を試みましたが、比較ツールが異なれば、異なることがわかります。これらのファイルをバイトごとに比較する何かを書いている間、私はあなたがこれについて何か知っているかどうか疑問に思っていました. 具体的には、プロジェクト参照の代わりに dll 参照を使用すると、ビルドされたアセンブリの動作に違いはありますか。

4

2 に答える 2

6

プロジェクトAの2つのビルド間でプロジェクトBのソースが変更されていない場合、プロジェクトAの出力の動作に違いはありません。ただし、プロジェクトBのソースが変更された場合、それをプロジェクトAのプロジェクトとして参照すると、プロジェクトBも再構築されます。この違いが、プロジェクトAからプロジェクトBを参照する方法の選択を決定するものです。

  • プロジェクトBとプロジェクトAの両方のソースを所有していて、それらが緊密に結合されている場合、または両方が活発に開発中であり、プロジェクトBのパブリックインターフェイスが頻繁に変更される場合は、プロジェクトBをプロジェクトとして参照する必要があります。これにより、プロジェクトAは常にプロジェクトBの最新の出力をビルドで使用するようになります。

  • プロジェクトBが外部依存関係である場合、自分で開発していないか、ソースがない場合、またはプロジェクトAで変更バージョンを出荷できない場合は、ビルド済みのバージョンを参照する必要があります。プロジェクトBの出力。同じバージョンのプロジェクトBで開発およびテストしていることを確認します。これは、ユーザーのコンピューター上にある可能性が最も高いものです。

于 2010-09-15T04:36:56.643 に答える
3

プロジェクト参照として追加すると、必要に応じてアセンブリ「B」が自動的に作成されるという利点があります。

アセンブリ「A」が作成されると、違いはありません。

于 2010-09-15T04:35:52.387 に答える