なぜ私は、参照アセンブリをチェーンしなければなりませんか?
-
09-09-2019 - |
質問
私のプロジェクトでは、別のアセンブリを参照するアセンブリを(X、それを呼び出します)(Y、それを呼び出します)を参照します。
私は私のプロジェクトをコンパイルしようとすると、、それはつまり、なぜそれがアセンブリY.を参照する必要があることを要求しますか?
:私は、アセンブリXが参照されている行に次のエラーを取得します型「DevExpress.XtraEditors.XtraForm」はアセンブリで定義されています それが参照されていません。あなたは、アセンブリへの参照を追加する必要があります 「DevExpress.Utils.v9.1、バージョン= 9.1.2.0、文化=中立、 なPublicKeyToken = b88d1754d700e49a」ます。
DevExpress.XtraEditors.XtraForm
アセンブリYである。
これはなぜでしょうか?私は前にこの振る舞いを見ていない。
解決
このはいつもの場所にありました。あなたが組み立てYからのメソッド/プロパティ/メンバーなどを取得するオブジェクトを使用している場合は、コンパイル時にのみこれらを取得します。
なぜ.NETは適切なシンボルとメタデータ情報を取得することができるようになります保証するために、アセンブリXに頼ることができないためである。
他のヒント
これは、常に、それはすべての依存関係への参照を持っていない場合、コンパイラは、プロジェクトをビルドしますどのように他のように行動している?
プロジェクトによって参照されるアセンブリは、アプリケーションが動作するために必要とされています。あなたはこれらのアセンブリから型を使用していて、それらの種類せずにアプリケーションを構築することはできません。さらに重要なことは、これらの種類せずにアプリケーションを実行することはできません。
は、今、あなたの参照は、アセンブリと同じ方法で構築されたすべてのアセンブリは、すべてののそのの参照されるアセンブリが存在し、計上することを要求することを検討してください。これは厄介なことが、最終結果は、あなたのアプリケーションを実行されると、CLRは、それはあなたのアプリケーションを実行するために必要なすべてのアセンブリを有していることであることができます連鎖反応を作成します。