Поделиться через


Последовательность поиска сборок

Если изолированное приложение указывает зависимость сборки, параллельно выполняет поиск сборки между общими сборками в папке WinSxS. Если требуемая сборка не найдена, параллельно выполняется поиск частной сборки, установленной в папке структуры каталогов приложения.

Локальные сборки могут быть развернуты в следующих местах в структуре каталогов приложения:

  • В папке приложения. Как правило, это папка, содержащая исполняемый файл приложения.
  • В подпапке в папке приложения. Вложенная папка должна иметь то же имя, что и сборка.
  • В подпапке для конкретного языка в папке приложения. Имя вложенной папки — это строка кодов языка DHTML, которые указывают на языковую культуру или язык.
  • В подкаталоге языковой папки в каталоге приложения. Имя подпапки верхнего уровня — это строка кодов языка DHTML, указывающая язык и регион или только язык. Более глубокий вложенный каталог имеет то же имя, что и сборка.

При первом параллельном поиске частной сборки определяется, есть ли в структуре каталогов приложения папка, предназначенная для конкретного языка. Если вложенная папка для конкретного языка отсутствует, параллельно выполняет поиск частной сборки в следующих расположениях, используя следующую последовательность.

  1. Параллельно выполняет поиск в папке WinSxS.
  2. \\<appdir>\<имя сборки>.DLL
  3. \\<appdir>\<имя сборки>.manifest
  4. \\<appdir>\<имя сборки>\<имя сборки>.DLL
  5. \\<appdir>\<имя сборки>\<имя сборки>.manifest

Если существует подпапка для конкретного языка, структура каталога приложения может содержать приватную сборку, локализованную на нескольких языках. Параллельно выполняет поиск вложенных папок для конкретного языка, чтобы убедиться, что приложение использует указанный язык или лучший доступный язык. Вложенные папки, относящиеся к языку, называются строкой кодов языка DHTML, которые указывают сочетание языка и культурных параметров или просто язык. Если вложенная папка для конкретного языка существует, параллельно выполняет поиск частной сборки в следующих расположениях, используя следующую последовательность.

  1. Параллельно выполняет поиск в папке WinSxS.
  2. \\<appdir>\<language-culture>\<имя сборки>.DLL
  3. \\<appdir>\<language-culture>\<имя сборки>.manifest
  4. \\<appdir>\<language-culture>\<имя сборки>\<имя сборки>.DLL
  5. \\<appdir>\<language-culture>\<имя сборки>\<имя сборки>.manifest

Обратите внимание, что последовательность параллельного поиска находит DLL-файл с именем сборки и останавливается перед поиском файла манифеста с именем сборки. Рекомендуемый способ обработки частной сборки, которая является библиотекой DLL, заключается в том, чтобы поместить манифест сборки в dll-файл в качестве ресурса. Идентификатор ресурса должен иметь значение 1, а имя частной сборки может совпадать с именем библиотеки DLL. Например, если имя библиотеки DLL — MICROSOFT.WINDOWS.MYSAMPLE.DLL, значение атрибута имени, используемого в элементе assemblyIdentity манифеста сборки, также может быть Microsoft.Windows.mysample.DLL. В качестве альтернативы можно поместить манифест сборки в отдельный файл, однако имя сборки и его манифеста должно отличаться от имени библиотеки 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. Параллельно выполняет поиск WinSxSS для версии 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. Параллельно выполняет поиск WinSxSS для версии 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) присутствует в системе, параллельно пытается привязаться к <имени сборки>.mui. Технология параллельного выполнения не пытается привязаться к сборке с именем <>.mui, если в процессе поиска обнаруживается локализованная версия сборки. Манифест языково-нейтральной сборки не будет иметь атрибута языка в элементе assemblyIdentity. Если технология side-by-side достигает языково-нейтральной сборки и MUI установлена, side-by-side выполняет поиск в следующих расположениях, используя следующую последовательность для имени сборки <>.mui. Параллельно использует ту же последовательность поиска, если сборка нейтраличена языком и региональными параметрами, за исключением <ни одного языка> не выполняется поиск.

  1. Параллельно выполняет поиск в папке WinSxS для <имени сборки>.mui.
  2. \\<культуры языка пользователя>\<сборочного имени>.mui
  3. \\<язык пользователя>\<имя сборки>.mui
  4. \\<язык-культура системы>\<имя_сборки>.mui
  5. \\<языка системы>\<имя сборки>.mui
  6. \\<нет языка>\<имя сборки>.mui

Например, если параллельный поиск находит частную сборку в c:\myapp\myasm\myasm.manifest, и myasm является языково-нейтральной сборкой. Затем параллельно используется следующая последовательность для поиска myasm.mui. Обратите внимание, что параллельная установка не будет выполнять поиск языково-нейтральной сборки многоязычного интерфейса пользователя (MUI).

  1. Параллельно выполняет поиск WinSxS для fr-be версии сборки MUI.
  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 для en-us версии сборки MUI.
  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.
  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