Share via


アセンブリ検索シーケンス

分離されたアプリケーションでアセンブリの依存関係が指定されている場合、最初に WinSxS フォルダー内の 共有アセンブリ 間でアセンブリが検索されます。 必要なアセンブリが見つからない場合は、アプリケーションのディレクトリ構造のフォルダーにインストールされているプライベート アセンブリを side-by-side で検索します。

プライベート アセンブリ は、アプリケーションのディレクトリ構造内の次の場所に配置できます。

  • アプリケーションのフォルダー内。 通常、これはアプリケーションの実行可能ファイルを含むフォルダーです。
  • アプリケーションのフォルダー内のサブフォルダー内。 サブフォルダーの名前はアセンブリと同じである必要があります。
  • アプリケーションのフォルダー内の言語固有のサブフォルダー内。 サブフォルダーの名前は、言語カルチャまたは言語を示す DHTML 言語コードの文字列です。
  • アプリケーションのフォルダー内の言語固有のサブフォルダーのサブフォルダー。 上位のサブフォルダーの名前は、言語カルチャまたは言語を示す DHTML 言語コードの文字列です。 より深いサブフォルダーの名前はアセンブリと同じです。

初めてプライベート アセンブリをサイド バイ サイドで検索すると、アプリケーションのディレクトリ構造に言語固有のサブフォルダーが存在するかどうかを判断します。 言語固有のサブフォルダーが存在しない場合は、次のシーケンスを使用して、次の場所にあるプライベート アセンブリを並べて検索します。

  1. WinSxS フォルダーを並べて検索します。
  2. \\<appdir>\<assemblyname>.DLL
  3. \\<appdir>\<assemblyname.manifest>
  4. \\<appdir>\<assemblyname>\<assemblyname>.DLL
  5. \\<appdir>\<assemblyname>\<assemblyname.manifest>

言語固有のサブフォルダーが存在する場合、アプリケーションのディレクトリ構造には、複数の言語でローカライズされたプライベート アセンブリが含まれている可能性があります。 言語固有のサブフォルダーを並べて検索し、アプリケーションで指定された言語または使用可能な最適な言語が使用されていることを確認します。 言語固有のサブフォルダーには、言語カルチャまたは言語を指定する DHTML 言語コードの文字列を使用して名前が付けられます。 言語固有のサブフォルダーが存在する場合は、次のシーケンスを使用して、次の場所にあるプライベート アセンブリを並べて検索します。

  1. WinSxS フォルダーを並べて検索します。
  2. \\<appdir>\<language-culture>\<assemblyname>.DLL
  3. \\<appdir>\<language-culture>\<assemblyname.manifest>
  4. \\<appdir>\<language-culture>\<assemblyname>\<assemblyname>.DLL
  5. \\<appdir>\<language-culture>\<assemblyname>\<assemblyname.manifest>

サイド バイ サイド検索シーケンスでは、アセンブリの名前を持つ DLL ファイルが検索され、アセンブリの名前を持つマニフェスト ファイルを検索する前に停止することに注意してください。 DLL であるプライベート アセンブリを処理するには、アセンブリ マニフェストをリソースとして DLL ファイルに配置することをお勧めします。 リソース ID は 1 である必要があり、プライベート アセンブリの名前は DLL の名前と同じにすることができます。 たとえば、DLL の名前がMICROSOFT.WINDOWS.MYSAMPLE.DLLされている場合、アセンブリのマニフェストの assemblyIdentity 要素で使用される name 属性の値も Microsoft.Windows.mysample になります。 別の方法として、アセンブリ マニフェストを別のファイルに配置することもできますが、アセンブリとそのマニフェストの名前は DLL の名前とは異なる必要があります。 たとえば、Microsoft.Windows.mysampleAsm、Microsoft.Windows.mysampleAsm.manifest、MICROSOFT.WINDOWS.MYSAMPLE.DLL。

たとえば、myapp がドライブ c: のルートにインストールされ、フランス語-ベルギー語で myasm が必要な場合、side-by-side は次のシーケンスを使用して、myasm のローカライズされたインスタンスに対する最適な近似を検索します。

  1. WinSxS で fr-be バージョンを並べて検索します。
  2. c:\myapp\fr-be\myasm.dll
  3. c:\myapp\fr-be\myasm.manifest
  4. c:\myapp\fr-be\myasm\myasm.dll
  5. c:\myapp\fr-be\myasm\myasm.manifest
  6. WinSxS で fr バージョンを並べて検索します。
  7. c:\myapp\fr\myasm.dll
  8. c:\myapp\fr\myasm.manifest
  9. c:\myapp\fr\myasm\myasm.dll
  10. c:\myapp\fr\myasm\myasm.manifest
  11. WinSxS で en-us バージョンを並べて検索します。
  12. c:\myapp\en-us\myasm.dll
  13. c:\myapp\en-us\myasm.manifest
  14. c:\myapp\en-us\myasm\myasm.dll
  15. c:\myapp\en-us\myasm\myasm.manifest
  16. WinSxS で en バージョンを並べて検索します。
  17. c:\myapp\en\myasm.dll
  18. c:\myapp\en\myasm.manifest
  19. c:\myapp\en\myasm\myasm.dll
  20. c:\myapp\en\myasm\myasm.manifest
  21. WinSxS で言語なしバージョンを並べて検索します。
  22. c:\myapp\myasm.dll
  23. c:\myapp\myasm.manifest
  24. c:\myapp\myasm\myasm.dll
  25. c:\myapp\myasm\myasm.manifest

サイド バイ サイド検索がアセンブリの言語に依存しないバージョンに達し、システムに多言語ユーザー インターフェイス (MUI) バージョンの Windows が存在する場合は、side-by-side で assemblyname.mui> に<バインドしようとします。 検索がアセンブリのローカライズされたバージョンに達した場合、<side-by-side は assemblyname.mui> へのバインドを試みません。 言語に依存しない アセンブリのアセンブリ マニフェスト には、 assemblyIdentity 要素に言語属性はありません。 side-by-side が言語に依存しないアセンブリに到達し、MUI がインストールされている場合は、assemblyname.mui> の次のシーケンス<を使用して、次の場所を side-by-side で検索します。 言語が検索されない場合を除き<、アセンブリがカルチャに依存しない>場合は、Side-by-side で同じ検索シーケンスが使用されます。

  1. WinSxS フォルダーを並べて検索し、assemblyname.mui> を検索<します。
  2. \\<user's language-culture>\<assemblyname.mui>
  3. \\<user's language>\<assemblyname.mui>
  4. \\<system's language-culture>\<assemblyname.mui>
  5. \\<system's language>\<assemblyname.mui>
  6. \\<no language>\<assemblyname.mui>

たとえば、side-by-side 検索で c:\myapp\myasm\myasm.manifest でプライベート アセンブリが見つかり、myasm が言語に依存しないアセンブリである場合です。 次に、次のシーケンスを使用して myasm.mui を検索します。 サイド バイ サイドでは、言語に依存しない MUI アセンブリは検索されないことに注意してください。

  1. WINSxS で MUI アセンブリの fr-be バージョンを並べて検索します。
  2. c:\myapp\fr-be\myasm.mui.dll
  3. c:\myapp\fr-be\myasm.mui.manifest
  4. c:\myapp\fr-be\myasm\myasm.mui.dll
  5. c:\myapp\fr-be\myasm\myasm.mui.manifest
  6. WINSxS で MUI アセンブリの fr バージョンを並べて検索します。
  7. c:\myapp\fr\myasm.mui.dll
  8. c:\myapp\fr\myasm.mui.manifest
  9. c:\myapp\fr\myasm\myasm.mui.dll
  10. c:\myapp\fr\myasm\myasm.mui.manifest
  11. WinSxS で MUI アセンブリの en-us バージョンを並べて検索します。
  12. c:\myapp\en-us\myasm.mui.dll
  13. c:\myapp\en-us\myasm.mui.manifest
  14. c:\myapp\en-us\myasm\myasm.mui.dll
  15. c:\myapp\en-us\myasm\myasm.mui.manifest
  16. WINSxS で MUI アセンブリの en バージョンを並べて検索します。
  17. c:\myapp\en\myasm.mui.dll
  18. c:\myapp\en\myasm.mui.manifest
  19. c:\myapp\en\myasm\myasm.mui.dll
  20. c:\myapp\en\myasm\myasm.mui.manifest