Последовательность поиска сборок
Если изолированное приложение указывает зависимость сборки, параллельно выполняется поиск сборки среди общих сборок в папке WinSxS. Если требуемая сборка не найдена, параллельно выполняется поиск частной сборки, установленной в папке структуры каталогов приложения.
Частные сборки можно развернуть в следующих расположениях в структуре каталогов приложения:
- В папке приложения. Как правило, это папка, содержащая исполняемый файл приложения.
- Во вложенной папке в папке приложения. Имя вложенной папки должно совпадать с именем сборки.
- Во вложенной папке для конкретного языка в папке приложения. Имя вложенной папки представляет собой строку кодов языка DHTML, указывающих язык и региональные параметры или язык.
- Во вложенной папке вложенной папки конкретного языка в папке приложения. Имя вложенной папки выше представляет собой строку кодов языка DHTML, указывающих язык и региональные параметры или язык. Более глубокая вложенная папка имеет то же имя, что и сборка.
При первом параллельном поиске частной сборки определяется, существует ли вложенная папка для конкретного языка в структуре каталогов приложения. Если вложенная папка для конкретного языка не существует, параллельно выполняется поиск частной сборки в следующих местах, используя следующую последовательность.
- Параллельно выполняется поиск в папке WinSxS.
- \\<appdir>\<assemblyname>.DLL
- \\<appdir>\<assemblyname.manifest>
- \\<appdir>\<assemblyname>\<assemblyname>.DLL
- \\<appdir>\<assemblyname>\<assemblyname.manifest>
Если вложенная папка для конкретного языка существует, структура каталогов приложения может содержать частную сборку, локализованную на нескольких языках. Параллельно выполняется поиск в вложенных папках для конкретного языка, чтобы убедиться, что приложение использует указанный язык или наилучший доступный язык. Вложенные папки, относящиеся к языку, именуются с помощью строки кодов языка DHTML, определяющих язык и региональные параметры или язык. Если вложенная папка для конкретного языка существует, параллельно выполняется поиск частной сборки в следующих расположениях, используя следующую последовательность.
- Параллельно выполняется поиск в папке WinSxS.
- \\<appdir>\<language-culture>\<assemblyname>.DLL
- \\<appdir>\<language-culture>\<assemblyname.manifest>
- \\<appdir>\<language-culture>\<assemblyname>\<assemblyname>.DLL
- \\<appdir>\<language-culture>\<assemblyname>\<assemblyname.manifest>
Обратите внимание, что последовательность параллельного поиска находит DLL-файл с именем сборки и останавливается перед поиском файла манифеста с именем сборки. Рекомендуемый способ обработки частной сборки, которая является библиотекой DLL, — поместить манифест сборки в dll-файл в качестве ресурса. Идентификатор ресурса должен быть равен 1, а имя частной сборки может совпадать с именем библиотеки DLL. Например, если имя библиотеки DLL MICROSOFT.WINDOWS.MYSAMPLE.DLL, значение атрибута name, используемого в элементе assemblyIdentity манифеста сборки, также может быть Microsoft.Windows.mysample. В качестве альтернативы можно поместить манифест сборки в отдельный файл, однако имя сборки и ее манифест должны отличаться от имени библиотеки DLL. Например, Microsoft.Windows.mysampleAsm, Microsoft.Windows.mysampleAsm.manifest и MICROSOFT.WINDOWS.MYSAMPLE.DLL.
Например, если приложение myapp установлено в корне диска c: и требует myasm на французском и бельгийском языках, то параллельно использует следующую последовательность для поиска наилучшего приближения к локализованным экземплярам myasm.
- Параллельно выполняется поиск версии fr-be в WinSxS.
- c:\myapp\fr-be\myasm.dll
- c:\myapp\fr-be\myasm.manifest
- c:\myapp\fr-be\myasm\myasm.dll
- c:\myapp\fr-be\myasm\myasm.manifest
- Параллельно выполняется поиск версии fr в WinSxS.
- c:\myapp\fr\myasm.dll
- c:\myapp\fr\myasm.manifest
- c:\myapp\fr\myasm\myasm.dll
- c:\myapp\fr\myasm\myasm.manifest
- Параллельно выполняется поиск версии en-us в WinSxS.
- c:\myapp\en-us\myasm.dll
- c:\myapp\en-us\myasm.manifest
- c:\myapp\en-us\myasm\myasm.dll
- c:\myapp\en-us\myasm\myasm.manifest
- Параллельно выполняется поиск версии en в WinSxS.
- c:\myapp\en\myasm.dll
- c:\myapp\en\myasm.manifest
- c:\myapp\en\myasm\myasm.dll
- c:\myapp\en\myasm\myasm.manifest
- Параллельно выполняется поиск версии WinSxS без языка.
- c:\myapp\myasm.dll
- c:\myapp\myasm.manifest
- c:\myapp\myasm\myasm.dll
- c:\myapp\myasm\myasm.manifest
Если параллельный поиск достигает версии сборки, не зависящей от языка, и в системе присутствует многоязыковая пользовательский интерфейс (MUI) версии Windows, то параллельно выполняется попытка выполнить привязку к <assemblyname.mui>. Параллельно не пытается выполнить привязку к <assemblyname.mui>, если поиск достигает локализованной версии сборки. Манифест сборки независимой от языка сборки не будет иметь атрибут языка в элементе assemblyIdentity. Если параллельно достигает сборки, не зависящий от языка, и muI установлен, параллельно выполняет поиск в следующих расположениях, используя следующую последовательность для <имени>_сборки.mui. Параллельно использует ту же последовательность поиска, если сборка не зависит от языка и региональных параметров, за исключением того<, что поиск по языку> не выполняется.
- Параллельно выполняется поиск в папке WinSxS по имени><_сборки.mui.
- \\<user's language-culture>\<assemblyname.mui>
- \\<user's language>\<assemblyname.mui>
- \\<system's language-culture>\<assemblyname.mui>
- \\<system's language>\<assemblyname.mui>
- \\<no language>\<assemblyname.mui>
Например, если при параллельном поиске обнаруживается частная сборка по адресу c:\myapp\myasm\myasm.manifest, а myasm является сборкой, не зависящим от языка. Затем параллельно использует следующую последовательность для поиска myasm.mui. Обратите внимание, что параллельно не выполняется поиск сборки muI, не зависящих от языка.
- Параллельно выполняется поиск в WinSxS для версии fr-be сборки MUI.
- c:\myapp\fr-be\myasm.mui.dll
- c:\myapp\fr-be\myasm.mui.manifest
- c:\myapp\fr-be\myasm\myasm.mui.dll
- c:\myapp\fr-be\myasm\myasm.mui.manifest
- Параллельно выполняется поиск в WinSxS для версии fr сборки MUI.
- c:\myapp\fr\myasm.mui.dll
- c:\myapp\fr\myasm.mui.manifest
- c:\myapp\fr\myasm\myasm.mui.dll
- c:\myapp\fr\myasm\myasm.mui.manifest
- Параллельно выполняет поиск в WinSxS версии сборки MUI en-us.
- c:\myapp\en-us\myasm.mui.dll
- c:\myapp\en-us\myasm.mui.manifest
- c:\myapp\en-us\myasm\myasm.mui.dll
- c:\myapp\en-us\myasm\myasm.mui.manifest
- Параллельно выполняется поиск в WinSxS для версии en сборки MUI.
- c:\myapp\en\myasm.mui.dll
- c:\myapp\en\myasm.mui.manifest
- c:\myapp\en\myasm\myasm.mui.dll
- c:\myapp\en\myasm\myasm.mui.manifest