最終コンパイルされたアセンブリの.NETのプロジェクトとDLL依存関係の違い

StackOverflow https://stackoverflow.com/questions/3714686

質問

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

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

私の質問は、私がAのためにアセンブリを構築すると、これら2つの方法間の最終出力に違いがあることです。

この関係をモデル化するいくつかの簡単なプロジェクトを作成して比較を試みましたが、異なる比較ツールは私に異なることを伝えています。これらのファイルをバイトごとに比較するものを書く保留中、私はあなたがこれについて何かを知っているかどうか疑問に思っていました。具体的には、プロジェクトリファレンスの代わりにDLLリファレンスを使用する場合、構築されたアセンブリの動作に違いがあります。

役に立ちましたか?

解決

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

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

  • プロジェクトBが外部依存関係の場合、自分自身を開発しないか、ソースを持っていない場合、またはそれがすでに出荷されていて、プロジェクトAで修正バージョンを出荷できない場合は、事前に構築されたものを参照したいプロジェクトB出力、同じバージョンのプロジェクトBで開発およびテストすることを確認するために、ユーザーのコンピューター上にある可能性が最も高くなります。

他のヒント

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top