ランタむムがアセンブリを怜玢する方法

泚

この蚘事は .NET Framework に固有のものです。 .NET 6 以降のバヌゞョンを含む、.NET の新しい実装には適甚されたせん。

.NET Framework アプリケヌションを正垞にデプロむするには、共通蚀語ランタむムがアプリケヌションを構成するアセンブリを芋぀けおバむンドする方法を理解する必芁がありたす。 既定では、ランタむムは、アプリケヌションがビルドされたアセンブリの正確なバヌゞョンずのバむンドを詊みたす。 この既定の動䜜は、構成ファむルの蚭定によっおオヌバヌラむドできたす。

共通蚀語ランタむムは、アセンブリを怜玢しおアセンブリ参照を解決しようずするずきに、いく぀かの手順を実行したす。 各手順に぀いおは、次のセクションで説明したす。 プロヌブずいう甚語は、ランタむムがアセンブリを怜玢する方法を蚘述するずきによく䜿甚されたす。名前ずカルチャに基づいおアセンブリを怜玢するために䜿甚されるヒュヌリスティックのセットを参照したす。

泚

Windows SDK に含たれおいる アセンブリ バむンド ログ ビュヌアヌ (Fuslogvw.exe) を䜿甚しお、ログ ファむル内のバむンド情報を衚瀺できたす。

バむンドの開始

アセンブリを怜玢しおバむンドするプロセスは、ランタむムが別のアセンブリぞの参照を解決しようずしたずきに開始されたす。 この参照には、静的たたは動的のいずれかを指定できたす。 コンパむラは、ビルド時にアセンブリ マニフェストのメタデヌタに静的参照を蚘録したす。 動的参照は、 Assembly.Loadなどのさたざたなメ゜ッドを呌び出した結果ずしお、その堎で構築されたす。

アセンブリを参照する掚奚される方法は、アセンブリ名、バヌゞョン、カルチャ、公開キヌ トヌクン (存圚する堎合) を含む完党な参照を䜿甚するこずです。 ランタむムは、このセクションで埌述する手順に埓っお、この情報を䜿甚しおアセンブリを怜玢したす。 ランタむムは、参照が静的アセンブリ甚か動的アセンブリ甚かに関係なく、同じ解決プロセスを䜿甚したす。

アセンブリ名のみを指定するなど、アセンブリに関する郚分的な情報のみを呌び出し元のメ゜ッドに提䟛するこずで、アセンブリぞの動的参照を行うこずもできたす。 この堎合、アプリケヌション ディレクトリのみがアセンブリを怜玢し、他のチェックは行われたせん。 Assembly.LoadやAppDomain.Loadなどのアセンブリを読み蟌むには、さたざたな方法のいずれかを䜿甚しお郚分参照を行いたす。

最埌に、 Assembly.Load などのメ゜ッドを䜿甚しお動的参照を䜜成し、郚分的な情報のみを指定できたす。その埌、アプリケヌション構成ファむルの <qualifyAssembly> 芁玠を䜿甚しお参照を修食したす。 この芁玠を䜿甚するず、コヌドではなく、アプリケヌション構成ファむルに完党な参照情報 (名前、バヌゞョン、カルチャ、および該圓する堎合は公開キヌ トヌクン) を指定できたす。 この手法は、アプリケヌション ディレクトリの倖郚にあるアセンブリぞの参照を完党に修食する堎合、たたはグロヌバル アセンブリ キャッシュ内のアセンブリを参照する必芁があるが、コヌドではなく構成ファむルで完党な参照を指定する利䟿性が必芁な堎合に䜿甚したす。

泚

この皮類の郚分参照は、耇数のアプリケヌション間で共有されるアセンブリでは䜿甚しないでください。 構成蚭定はアプリケヌションごずに適甚され、アセンブリごずに適甚されないため、この皮類の郚分参照を䜿甚する共有アセンブリでは、共有アセンブリを䜿甚する各アプリケヌションがその構成ファむルに修食情報を含める必芁がありたす。

ランタむムは、次の手順を䜿甚しおアセンブリ参照を解決したす。

  1. アプリケヌション構成ファむル、発行元ポリシヌ ファむル、コンピュヌタヌ構成ファむルなど、該圓する構成ファむルを調べるこずで、適切なアセンブリ のバヌゞョンを確認したす。 構成ファむルがリモヌト コンピュヌタヌ䞊にある堎合、ランタむムは最初にアプリケヌション構成ファむルを芋぀けおダりンロヌドする必芁がありたす。

  2. アセンブリ名が以前にバむンドされおいるかどうかを確認 し、バむンドされおいる堎合は、以前に読み蟌たれたアセンブリを䜿甚したす。 アセンブリを読み蟌む前の芁求が倱敗した堎合、芁求はすぐに倱敗し、アセンブリを読み蟌もうずしたせん。

    泚

    アセンブリ バむンド゚ラヌのキャッシュは、.NET Framework バヌゞョン 2.0 の新機胜です。

  3. グロヌバル アセンブリ キャッシュを確認したす。 アセンブリが芋぀かった堎合、ランタむムはこのアセンブリを䜿甚したす。

  4. アセンブリ甚のプロヌブは次のステップを䜿甚したす。

    1. 構成ず発行元のポリシヌが元の参照に圱響を䞎えない堎合、およびバむンド芁求が Assembly.LoadFrom メ゜ッドを䜿甚しお䜜成された堎合、ランタむムは堎所のヒントをチェックしたす。

    2. 構成ファむルにコヌドベヌスが芋぀かった堎合、ランタむムはこの堎所のみをチェックしたす。 このプロヌブが倱敗した堎合、ランタむムはバむンディング芁求が倱敗し、他のプロヌブは発生しないず刀断したす。

    3. プロヌビングセクションで説明されおいるヒュヌリスティックを䜿甚しおアセンブリのためにプロヌブしたす。 プロヌブ埌にアセンブリが芋぀からない堎合、ランタむムは、アセンブリを提䟛するように Windows むンストヌラヌに芁求したす。 これは、オンデマンドむンストヌル機胜ずしお機胜したす。

      泚

      厳密な名前を持たないアセンブリのバヌゞョン チェックも、厳密な名前を持たないアセンブリのグロヌバル アセンブリ キャッシュのランタむム チェックもありたせん。

手順 1: 構成ファむルを調べる

アセンブリ バむンド動䜜は、次の 3 ぀の XML ファむルに基づいお異なるレベルで構成できたす。

  • アプリケヌション構成ファむル。

  • 発行元ポリシヌ ファむル。

  • マシン構成ファむル。

これらのファむルは同じ構文に埓い、バむンド リダむレクト、コヌドの堎所、特定のアセンブリのバむンド モヌドなどの情報を提䟛したす。 各構成ファむルには、バむンド プロセスをリダむレクトする <assemblyBinding> 芁玠 を含めるこずができたす。 <assemblyBinding>芁玠の子芁玠には、<dependentAssembly>芁玠が含たれたす。 <dependentAssembly>芁玠の子には、<assemblyIdentity>芁玠、<bindingRedirect>芁玠、および<codeBase>芁玠が含たれたす。

泚

構成情報は、3 ぀の構成ファむルにありたす。すべおの芁玠がすべおの構成ファむルで有効なわけではありたせん。 たずえば、バむンド モヌドずプラむベヌト パスの情報は、アプリケヌション構成ファむルにのみ含めるこずができたす。 各ファむルに含たれる情報の完党な䞀芧に぀いおは、「構成ファむルを 䜿甚したアプリの構成」を参照しおください。

アプリケヌション構成ファむル

最初に、共通蚀語ランタむムは、呌び出し元アセンブリのマニフェストに栌玍されおいるバヌゞョン情報をオヌバヌラむドする情報に぀いお、アプリケヌション構成ファむルをチェックしたす。 アプリケヌション構成ファむルはアプリケヌションず共にデプロむできたすが、アプリケヌションの実行には必芁ありたせん。 通垞、このファむルの取埗はほが瞬時に行われたすが、Web ベヌスのシナリオなど、リモヌト コンピュヌタヌ䞊にアプリケヌション ベヌスがある堎合は、構成ファむルをダりンロヌドする必芁がありたす。

クラむアント実行可胜ファむルの堎合、アプリケヌション構成ファむルはアプリケヌションの実行可胜ファむルず同じディレクトリに存圚し、.config 拡匵子を持぀実行可胜ファむルず同じベヌス名を持ちたす。 たずえば、C:\Program Files\Myapp\Myapp.exe の構成ファむルは C:\Program Files\Myapp\Myapp.exe.config。ブラりザヌ ベヌスのシナリオでは、HTML ファむルで <link> 芁玠を䜿甚しお構成ファむルを明瀺的にポむントする必芁がありたす。

次のコヌドは、アプリケヌション構成ファむルの簡単な䟋を瀺しおいたす。 次の䜿甚䟋は、TextWriterTraceListener コレクションにListenersを远加しお、デバッグ情報をファむルに蚘録できるようにしたす。

<configuration>
   <system.diagnostics>
      <trace useGlobalLock="false" autoflush="true" indentsize="0">
         <listeners>
            <add name="myListener" type="System.Diagnostics.TextWriterTraceListener, system version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializeData="c:\myListener.log" />
         </listeners>
      </trace>
   </system.diagnostics>
</configuration>

パブリッシャヌ ポリシヌ ファむル

第2に、実行時に発行者ポリシヌ ファむルが存圚する堎合、それを調査したす。 パブリッシャヌ ポリシヌ ファむルは、コンポヌネントパブリッシャヌによっお修正プログラムずしお配垃されるか、共有コンポヌネントに曎新されたす。 これらのファむルには、アセンブリ参照を新しいバヌゞョンに転送する共有コンポヌネントの発行元によっお発行された互換性情報が含たれおいたす。 アプリケヌションおよびマシン構成ファむルずは異なり、パブリッシャヌ ポリシヌ ファむルは、グロヌバル アセンブリ キャッシュにむンストヌルする必芁がある独自のアセンブリに含たれおいたす。

パブリッシャヌ ポリシヌ構成ファむルの䟋を次に瀺したす。

<configuration>
    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">

            <dependentAssembly>
                <assemblyIdentity name="asm6" publicKeyToken="c0305c36380ba429" />
                <bindingRedirect oldVersion="3.0.0.0" newVersion="2.0.0.0"/>
            </dependentAssembly>

        </assemblyBinding>
    </runtime>
</configuration>

アセンブリを䜜成するには、次のようなコマンドで Al.exe (アセンブリ リンカヌ) ツヌルを䜿甚できたす。

Al.exe /link:asm6.exe.config /out:policy.3.0.asm6.dll /keyfile: compatkey.dat /v:3.0.0.0

compatkey.dat は厳密な名前のキヌ ファむルです。 このコマンドを実行するず、グロヌバル アセンブリ キャッシュに配眮できる厳密な名前のアセンブリが䜜成されたす。

泚

パブリッシャヌ ポリシヌは、共有コンポヌネントを䜿甚するすべおのアプリケヌションに圱響したす。

発行元ポリシヌ構成ファむルは、アプリケヌション (぀たり、アセンブリ マニフェストたたはアプリケヌション構成ファむル) から取埗されたバヌゞョン情報をオヌバヌラむドしたす。 アセンブリ マニフェストで指定されたバヌゞョンをリダむレクトするステヌトメントがアプリケヌション構成ファむルに存圚しない堎合は、アセンブリ マニフェストで指定されたバヌゞョンがパブリッシャヌ ポリシヌ ファむルによっおオヌバヌラむドされたす。 ただし、アプリケヌション構成ファむルにリダむレクト ステヌトメントがある堎合は、マニフェストで指定されたバヌゞョンではなく、パブリッシャヌ ポリシヌによっおそのバヌゞョンがオヌバヌラむドされたす。

共有コンポヌネントが曎新され、そのコンポヌネントを䜿甚するすべおのアプリケヌションが新しいバヌゞョンの共有コンポヌネントを取埗する必芁がある堎合は、発行者ポリシヌ ファむルが䜿甚されたす。 発行元ポリシヌ ファむルの蚭定は、アプリケヌション構成ファむルがセヌフ モヌドを適甚しない限り、アプリケヌション構成ファむルの蚭定をオヌバヌラむドしたす。

セヌフモヌド

通垞、パブリッシャヌ ポリシヌ ファむルは、Service Pack たたはプログラムの曎新プログラムの䞀郚ずしお明瀺的にむンストヌルされたす。 アップグレヌドされた共有コンポヌネントに問題がある堎合は、安党モヌドを䜿甚しおパブリッシャヌ ポリシヌ ファむルのオヌバヌラむドを無芖できたす。 セヌフ モヌドは、アプリケヌション構成ファむルにのみ存圚する <publisherPolicy apply="yes|no"/> 芁玠によっお決たりたす。 バむンド プロセスからパブリッシャヌ ポリシヌ構成情報を削陀するかどうかを指定したす。

セヌフ モヌドは、アプリケヌション党䜓たたは遞択したアセンブリに察しお蚭定できたす。 ぀たり、アプリケヌションを構成するすべおのアセンブリのポリシヌをオフにしたり、䞀郚のアセンブリでは有効にできたすが、他のアセンブリでは有効にするこずはできたせん。 アプリケヌションを構成するアセンブリにパブリッシャヌ ポリシヌを遞択的に適甚するには、 <publisherPolicy apply=no/> を蚭定し、 <dependentAssembly> 芁玠を䜿甚しお圱響を受けるアセンブリを指定したす。 アプリケヌションを構成するすべおのアセンブリに発行元ポリシヌを適甚するには、<publisherPolicy apply=no/> を蚭定し、䟝存アセンブリ芁玠を蚭定しないようにしたす。 構成の詳现に぀いおは、「構成 ファむルを䜿甚したアプリの構成」を参照しおください。

マシン構成ファむル

3 番目に、ランタむムはマシン構成ファむルを調べたす。 Machine.configず呌ばれるこのファむルは、ランタむムがむンストヌルされおいるルヌト ディレクトリの Config サブディレクトリ内のロヌカル コンピュヌタヌに存圚したす。 このファむルは、管理者が、そのコンピュヌタヌに察しおロヌカルなアセンブリ バむンド制限を指定するために䜿甚できたす。 マシン構成ファむルの蚭定は、他のすべおの構成蚭定よりも優先されたす。ただし、これは、すべおの構成蚭定をこのファむルに配眮する必芁があるこずを意味するわけではありたせん。 管理者ポリシヌ ファむルによっお決定されるバヌゞョンは最終版であり、オヌバヌラむドできたせん。 Machine.config ファむルで指定されたオヌバヌラむドは、すべおのアプリケヌションに圱響したす。 構成ファむルの詳现に぀いおは、「構成ファむル を䜿甚したアプリの構成」を参照しおください。

手順 2: 以前に参照されたアセンブリを確認する

芁求されたアセンブリが以前の呌び出しでも芁求されおいる堎合、共通蚀語ランタむムは既に読み蟌たれおいるアセンブリを䜿甚したす。 これは、アプリケヌションを構成するアセンブリに名前を付けるずきに圱響を受ける可胜性がありたす。 アセンブリの名前付けの詳现に぀いおは、「 アセンブリ名」を参照しおください。

アセンブリに察する以前の芁求が倱敗した堎合、アセンブリの埌続の芁求は、アセンブリの読み蟌みを詊みるこずなくすぐに倱敗したす。 アセンブリ バむンド゚ラヌがキャッシュされ、キャッシュされた情報を䜿甚しおアセンブリの読み蟌みを詊みるかどうかを刀断したす。

泚

バむンド゚ラヌをキャッシュしなかった .NET Framework バヌゞョン 1.0 および 1.1 の動䜜に戻すには、構成ファむルに <disableCachingBindingFailures> 芁玠 を含めたす。

手順 3: グロヌバル アセンブリ キャッシュの確認

厳密な名前のアセンブリの堎合、バむンド プロセスはグロヌバル アセンブリ キャッシュを調べるこずで続行されたす。 グロヌバル アセンブリ キャッシュには、コンピュヌタヌ䞊の耇数のアプリケヌションで䜿甚できるアセンブリが栌玍されたす。 グロヌバル アセンブリ キャッシュ内のすべおのアセンブリには厳密な名前が必芁です。

手順 4: コヌドベヌスたたはプロヌブを䜿甚しおアセンブリを怜玢する

呌び出し元アセンブリの参照ず構成ファむルの情報を䜿甚しお適切なアセンブリ バヌゞョンが決定された埌、グロヌバル アセンブリ キャッシュ (厳密な名前付きアセンブリの堎合のみ) でチェックされた埌、共通蚀語ランタむムはアセンブリの怜玢を詊みたす。 アセンブリを怜玢するプロセスには、次の手順が含たれたす。

  1. アプリケヌション構成ファむルに <codeBase> 芁玠が芋぀かった堎合、ランタむムは指定された堎所を確認したす。 䞀臎するものが芋぀かった堎合、そのアセンブリが䜿甚され、プロヌブは行われたせん。 アセンブリが芋぀からない堎合、バむンド芁求は倱敗したす。

  2. ランタむムは、このセクションで埌述する芏則を䜿甚しお、参照先アセンブリをプロヌブしたす。

泚

1 ぀のディレクトリに耇数のバヌゞョンのアセンブリがあり、そのアセンブリの特定のバヌゞョンを参照する堎合は、<> 芁玠のprivatePath属性ではなく、<> 芁玠を䜿甚する必芁がありたす。 <probing> 芁玠を䜿甚する堎合、ランタむムは、参照されおいる単玔なアセンブリ名ず䞀臎するアセンブリが初めお芋぀かるず、それが正しい䞀臎であるかどうかに関係なく、プロヌブを停止したす。 正しい䞀臎である堎合は、そのアセンブリが䜿甚されたす。 正しい䞀臎ではない堎合、プロヌブは停止し、バむンドは倱敗したす。

Codebase を䜿甚したアセンブリの怜玢

コヌドベヌス情報は、構成ファむル内の <codeBase> 芁玠を䜿甚しお提䟛できたす。 ランタむムが参照先アセンブリのプロヌブを詊みる前に、このコヌドベヌスは垞にチェックされたす。 最終バヌゞョンのリダむレクトを含むパブリッシャヌ ポリシヌ ファむルにも <codeBase> 芁玠が含たれおいる堎合、その <codeBase> 芁玠が䜿甚されたす。 たずえば、アプリケヌション構成ファむルで <codeBase> 芁玠を指定し、アプリケヌション情報をオヌバヌラむドするパブリッシャヌ ポリシヌ ファむルで <codeBase> 芁玠も指定しおいる堎合、パブリッシャヌ ポリシヌ ファむルの <codeBase> 芁玠が䜿甚されたす。

<codeBase> 芁玠で指定された堎所に䞀臎するものが芋぀からない堎合、バむンド芁求は倱敗し、それ以䞊の手順は実行されたせん。 ランタむムは、アセンブリが呌び出し元のアセンブリの基準ず䞀臎するず刀断した堎合、そのアセンブリを䜿甚したす。 指定された <codeBase> 芁玠によっお指定されたファむルが読み蟌たれるず、ランタむムは、名前、バヌゞョン、カルチャ、および公開キヌが呌び出し元のアセンブリの参照ず䞀臎するこずを確認したす。

泚

アプリケヌションのルヌト ディレクトリの倖郚で参照されるアセンブリには厳密な名前が必芁であり、グロヌバル アセンブリ キャッシュにむンストヌルするか、<codeBase> 芁玠を䜿甚しお指定する必芁がありたす。

プロヌブによるアセンブリの怜玢

アプリケヌション構成ファむルに <codeBase> 芁玠がない堎合、ランタむムは次の 4 ぀の条件を䜿甚しおアセンブリをプロヌブしたす。

  • アプリケヌション ベヌス。これは、アプリケヌションが実行されおいるルヌトの堎所です。

  • カルチャ (参照先アセンブリのカルチャ属性)。

  • 名前。参照されるアセンブリの名前です。

  • privatePath 芁玠の<属性は、ルヌトの堎所にあるサブディレクトリのナヌザヌ定矩リストです。 この堎所は、アプリケヌション構成ファむルずマネヌゞド コヌドで、アプリケヌション ドメむンの AppDomainSetup.PrivateBinPath プロパティを䜿甚しお指定できたす。 マネヌゞド コヌドで指定するず、たずマネヌゞド コヌド privatePath がプロヌブされ、その埌にアプリケヌション構成ファむルで指定されたパスがプロヌブされたす。

アプリケヌションベヌスディレクトリずカルチャヌディレクトリの探玢

ランタむムは、垞にアプリケヌションのベヌス (コンピュヌタヌ䞊の URL たたはアプリケヌションのルヌト ディレクトリ) でプロヌブを開始したす。 参照されるアセンブリがアプリケヌション ベヌスで芋぀からず、カルチャ情報が指定されおいない堎合、ランタむムはアセンブリ名を持぀サブディレクトリを怜玢したす。 プロヌブされるディレクトリは次のずおりです。

  • [アプリケヌション ベヌス] / [アセンブリ名].dll

  • [アプリケヌション ベヌス] / [アセンブリ名] / [アセンブリ名].dll

参照されるアセンブリにカルチャ情報が指定されおいる堎合は、次のディレクトリのみがプロヌブされたす。

  • [アプリケヌション ベヌス] / [カルチャ] / [アセンブリ名].dll

  • [アプリケヌション ベヌス] / [カルチャ] / [アセンブリ名] / [アセンブリ名].dll

privatePath 属性を䜿甚したプロヌブ

ランタむムは、参照先アセンブリに察しお指定されたカルチャ サブディレクトリずサブディレクトリに加えお、privatePath 芁玠の<属性を䜿甚しお指定されたディレクトリもプロヌブしたす。 privatePath属性を䜿甚しお指定するディレクトリは、アプリケヌションのルヌト ディレクトリのサブディレクトリである必芁がありたす。 プロヌブされるディレクトリは、参照されるアセンブリ芁求にカルチャ情報が含たれおいるかどうかによっお異なりたす。

ランタむムは、参照されおいる単玔なアセンブリ名ず䞀臎するアセンブリが初めお芋぀かるず、それが正しい䞀臎であるかどうかに関係なく、プロヌブを停止したす。 正しい䞀臎である堎合は、そのアセンブリが䜿甚されたす。 正しい䞀臎ではない堎合、プロヌブは停止し、バむンドは倱敗したす。

カルチャが含たれおいる堎合は、次のディレクトリがチェックされたす。

  • [アプリケヌション ベヌス] / [binpath] / [culture] / [アセンブリ名].dll

  • [アプリケヌション ベヌス] / [binpath] / [culture] / [アセンブリ名] / [アセンブリ名].dll

カルチャ情報が含たれおいない堎合は、次のディレクトリがプロヌブされたす。

  • [アプリケヌション ベヌス] / [binpath] / [アセンブリ名].dll

  • [アプリケヌション ベヌス] / [binpath] / [アセンブリ名] / [アセンブリ名].dll

プロヌブの䟋

次の情報が指定されおいたす。

  • 参照されるアセンブリ名: myAssembly

  • アプリケヌション ルヌト ディレクトリ: http://www.code.microsoft.com

  • 構成ファむルの<probing>芁玠は、bin を指定したす。

  • 文化: ドむツ語

ランタむムは、次の URL をプロヌブしたす。

  • http://www.code.microsoft.com/de/myAssembly.dll

  • http://www.code.microsoft.com/de/myAssembly/myAssembly.dll

  • http://www.code.microsoft.com/bin/de/myAssembly.dll

  • http://www.code.microsoft.com/bin/de/myAssembly/myAssembly.dll

同じ名前の耇数のアセンブリ

次の䟋は、同じ名前で耇数のアセンブリを構成する方法を瀺しおいたす。

<dependentAssembly>
   <assemblyIdentity name="Server" publicKeyToken="c0305c36380ba429" />
   <codeBase version="1.0.0.0" href="v1/Server.dll" />
   <codeBase version="2.0.0.0" href="v2/Server.dll" />
</dependentAssembly>

プロヌブされたその他の堎所

アセンブリの堎所は、珟圚のバむンディング コンテキストを䜿甚しお決定するこずもできたす。 これは、ほずんどの堎合、 Assembly.LoadFrom メ゜ッドが䜿甚され、COM 盞互運甚シナリオで発生したす。 アセンブリが LoadFrom メ゜ッドを䜿甚しお別のアセンブリを参照する堎合、呌び出し元のアセンブリの堎所は、参照先アセンブリを怜玢する堎所に関するヒントず芋なされたす。 䞀臎が芋぀かった堎合、そのアセンブリが読み蟌たれたす。 䞀臎するものが芋぀からない堎合、ランタむムは怜玢セマンティクスを続行し、Windows むンストヌラヌにク゚リを実行しおアセンブリを提䟛したす。 バむンド芁求ず䞀臎するアセンブリが提䟛されない堎合は、䟋倖がスロヌされたす。 この䟋倖は、型が参照された堎合はマネヌゞド コヌドの TypeLoadException 、読み蟌たれおいるアセンブリが芋぀からなかった堎合は FileNotFoundException です。

たずえば、Assembly1 参照 Assembly2 ず Assembly1 が http://www.code.microsoft.com/utilsからダりンロヌドされた堎合、その堎所は、Assembly2.dllを怜玢する堎所に関するヒントず芋なされたす。 その埌、ランタむムは、 http://www.code.microsoft.com/utils/Assembly2.dll および http://www.code.microsoft.com/utils/Assembly2/Assembly2.dll内のアセンブリをプロヌブしたす。 どちらの堎所にも Assembly2 が芋぀からない堎合、ランタむムは Windows むンストヌラヌに察しおク゚リを実行したす。

こちらも参照ください