어셈블리 검색 시퀀스

격리된 애플리케이션이 어셈블리 종속성을 지정하는 경우 WinSxS 폴더의 공유 어셈블리에서 어셈블리 를 나란히 검색합니다. 필요한 어셈블리를 찾을 수 없는 경우 나란히 애플리케이션의 디렉터리 구조 폴더에 설치된 프라이빗 어셈블리를 검색합니다.

프라이빗 어셈블리는 애플리케이션의 디렉터리 구조에서 다음 위치에 배포할 수 있습니다.

  • 애플리케이션의 폴더에 있습니다. 일반적으로 애플리케이션의 실행 파일을 포함하는 폴더입니다.
  • 애플리케이션 폴더의 하위 폴더에 있습니다. 하위 폴더의 이름은 어셈블리와 같아야 합니다.
  • 애플리케이션 폴더의 언어별 하위 폴더에 있습니다. 하위 폴더의 이름은 언어 문화권 또는 언어를 나타내는 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 요소에 사용되는 이름 특성 값도 Microsoft일 수 있습니다. Windows.mysample. 또는 어셈블리 매니페스트를 별도의 파일에 배치할 수 있지만 어셈블리 이름 및 해당 매니페스트는 DLL의 이름과 달라야 합니다. 예를 들어 Microsoft입니다. Windows.mysampleAsm, Microsoft. Windows.mysampleAsm.manifest 및 MICROSOFT.WINDOWS.MYSAMPLE.DLL.

예를 들어 myapp이 c 드라이브의 루트에 설치되어 있고 프랑스어-벨기에에서 myasm이 필요한 경우 다음 시퀀스를 함께 사용하여 지역화된 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 요소에 언어 특성이 없습니다. 병렬로 언어 중립적 어셈블리에 도달하고 MUI가 설치된 경우 assemblyname.mui>에 대해 < 다음 시퀀스를 사용하여 다음 위치를 나란히 검색합니다. 어셈블리가 문화권 중립적인 경우 언어가 검색되지 않는 경우>< 동일한 검색 순서를 함께 사용합니다.

  1. Side-by-side는 WinSxS 폴더에서 assemblyname.mui>를 < 검색합니다.
  2. \\<user's language-culture>\<assemblyname.mui>
  3. \\<user's language>\<assemblyname.mui>
  4. \\<system의 language-culture>\<assemblyname.mui>
  5. \\<system의 language>\<assemblyname.mui>
  6. \\<no language>\<assemblyname.mui>

예를 들어 나란히 검색하는 경우 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