2009-08-25 14 views
3

アプリケーションのコンパイル時に使用されるアセンブリの場所をVS 2008がどのように決定しますか?何らかの命令が使われている必要があります。ツール\設定や他の何かに使用されているものがありますか?コンパイル処理中にアセンブリの分解が発生する順序を探しています。コンパイル時のアセンブリ解決の順序

答えて

2

実際には、2008年は注文を決定するのではなく、コンパイラです。私はあなたが言語を指定していないことを知っていますが、私は例としてC#を使用します(他の多くの言語も良い例として役立つでしょう)。 C#を使用していた場合、コンパイラは最初にcsc.rsp(csc.exeの横にある応答ファイル)を処理してから、コマンドライン/ r:オプションを処理します。操作の順序によって、どのアセンブリが参照されているかが決まります。したがって、csc.rspのアセンブリ参照が最初に見つかった後、コマンドラインアセンブリが検出されます。これはコンパイル時です。ここではC#コマンドラインコンパイラオプションのドキュメントです

http://msdn.microsoft.com/en-us/library/8a1fs1tb(VS.71).aspx

http://msdn.microsoft.com/en-us/library/2fdbz5xd(VS.71).aspx

あなたはコマンド - を使用する必要があります

は、ここでC#の応答ファイルのためのドキュメントですカスタム応答ファイルを使用する場合は、コンパイラー・ライン・コンパイラーを使用してください。それ以外の場合は、プロジェクトの参照フォルダに追加する参照が、VSでビルドするときにコマンドラインに表示される内容を決定します。これらの参照がコマンドラインで表示される順序は、ビルドを行い、出力ウィンドウCtrl + W + Oを見ることで確認できます。

実行時アセンブリのバインディングは、VSではなくCLRによって決定されます。クイック要約は、アセンブリが以前にメモリにロードされているかどうかを調べるためにCLRを検索し、GACをチェックしてから、コードにLoadを呼び出すかどうか、codeBaseの設定ファイルを設定し、アセンブリのexeまたはdllバージョンの名前が付けられたアプリケーションフォルダの下に一連のフォルダがあります。ここでは、MSDNのリンクがあります:

http://msdn.microsoft.com/en-us/library/yx7xezcf.aspx

あなたがこの質問を求めているという事実は、あなたの動機はアセンブリバインディングの問題を解決することを目的とするなら、私は思ってしまいます。 .NET FrameworkのSDKのツールがあり、総会は、この種の問題を解決する手助けするためにログビューア(Fuslogvw.exeでは)のバインディングと呼ばれる:

http://msdn.microsoft.com/en-us/library/e74a18c4(VS.71).aspx

ネット上で最高のリソースのカップルのために働きますアセンブリバインディングとフュージョンログビューアでリチャード・グライムス核融合ワークショップです。

http://www.grimes.demon.co.uk/workshops/fusionWS.htm

数年前、CLRチームのメンバーだったスザンヌ・クックは、結合CLR上の記事の優れたシリーズをやりました:

0このことができます

http://blogs.msdn.com/suzcook/default.aspx

希望、

ジョー

0

かなり確信してこれはあなたの参照を追加した方法によって異なります。

私はそれがこのように書きを考える:、GAC参照した場合

  1. ファイル参照した場合、プロジェクト
  2. のビルド出力から、プロジェクト参照した場合GAC
  3. に見て、ルックスファイルの場所で

あなたが何らかのタイプを直接参照している場合、そのアセンブリを参照するまでプロジェクトはビルドされません。共通のディレクトリにファイルを置いてコンパイルするだけです。アセンブリを明示的に参照する必要があります。

実行時にアセンブリの解像度が問題になります。コンパイル時には、かなり確定的です。

関連する問題