Compartir a través de


Secuencia de búsqueda de ensamblados

Si una aplicación aislada especifica una dependencia de ensamblado, primero busca el ensamblado en paralelo entre los ensamblados compartidos de la carpeta WinSxS. Si no se encuentra el ensamblado necesario, en paralelo, busca un ensamblado privado instalado en una carpeta de la estructura de directorios de la aplicación.

Los ensamblados privados se pueden implementar en las siguientes ubicaciones de la estructura de directorios de la aplicación:

  • En la carpeta de la aplicación. Normalmente, esta es la carpeta que contiene el archivo ejecutable de la aplicación.
  • En una subcarpeta de la carpeta de la aplicación. La subcarpeta debe tener el mismo nombre que el ensamblado.
  • En una subcarpeta específica del lenguaje en la carpeta de la aplicación. El nombre de la subcarpeta es una cadena de códigos de lenguaje DHTML que indican una referencia cultural de idioma o idioma.
  • En una subcarpeta de una subcarpeta específica del lenguaje en la carpeta de la aplicación. El nombre de la subcarpeta superior es una cadena de códigos de lenguaje DHTML que indican una referencia cultural o un idioma de idioma. La subcarpeta más profunda tiene el mismo nombre que el ensamblado.

La primera vez que busca un ensamblado privado en paralelo, determina si existe una subcarpeta específica del lenguaje en la estructura de directorios de la aplicación. Si no existe ninguna subcarpeta específica del lenguaje, busca en paralelo el ensamblado privado en las siguientes ubicaciones mediante la secuencia siguiente.

  1. Busca en paralelo la carpeta WinSxS.
  2. \\<appdir>\<assemblyname>.DLL
  3. \\<appdir>\<assemblyname.manifest>
  4. \\<appdir>\<assemblyname\<assemblyname>>.DLL
  5. \\<appdir>\<assemblyname>\<assemblyname.manifest>

Si existe una subcarpeta específica del lenguaje, la estructura de directorios de la aplicación puede contener el ensamblado privado localizado en varios idiomas. Busca en paralelo las subcarpetas específicas del idioma para asegurarse de que la aplicación usa el idioma especificado o el mejor idioma disponible. Las subcarpetas específicas del lenguaje se denominan mediante una cadena de códigos de lenguaje DHTML que especifican una referencia cultural de idioma o idioma. Si existe una subcarpeta específica del lenguaje, busca en paralelo el ensamblado privado en las siguientes ubicaciones mediante la secuencia siguiente.

  1. Busca en paralelo la carpeta 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>

Tenga en cuenta que la secuencia de búsqueda en paralelo busca un archivo DLL con el nombre del ensamblado y se detiene antes de buscar un archivo de manifiesto que tenga el nombre del ensamblado. La manera recomendada de controlar un ensamblado privado que es un archivo DLL consiste en colocar el manifiesto del ensamblado en el archivo DLL como un recurso. El identificador de recurso debe ser igual a 1 y el nombre del ensamblado privado puede ser el mismo que el nombre del archivo DLL. Por ejemplo, si el nombre del archivo DLL es MICROSOFT.WINDOWS.MYSAMPLE.DLL, el valor del atributo name usado en el elemento assemblyIdentity del manifiesto del ensamblado también puede ser Microsoft.Windows.mysample. Como alternativa, puede colocar el manifiesto del ensamblado en un archivo independiente, sin embargo, el nombre del ensamblado y su manifiesto deben ser diferentes del nombre del archivo DLL. Por ejemplo, Microsoft.Windows.mysampleAsm, Microsoft.Windows.mysampleAsm.manifest y MICROSOFT.WINDOWS.MYSAMPLE.DLL.

Por ejemplo, si myapp está instalado en la raíz de la unidad c: y requiere myasm en francés belga, en paralelo usa la siguiente secuencia para buscar la mejor aproximación a una instancia localizada de myasm.

  1. Busca en paralelo winSxS la versión 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. Busca en paralelo WinSxS la versión 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. Busca en paralelo winSxS la versión 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. Busca winSxS en paralelo en la versión 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. En paralelo, winSxS busca la versión sin idioma.
  22. c:\myapp\myasm.dll
  23. c:\myapp\myasm.manifest
  24. c:\myapp\myasm\myasm.dll
  25. c:\myapp\myasm\myasm.manifest

Si la búsqueda en paralelo llega a una versión independiente del lenguaje del ensamblado, y una versión de interfaz de usuario multilanguage (MUI) de Windows está presente en el sistema, en paralelo intenta enlazar con <assemblyname.mui>. En paralelo, no intenta enlazar con <assemblyname.mui> si la búsqueda alcanza una versión localizada del ensamblado. El manifiesto del ensamblado de un ensamblado independiente del lenguaje no tendrá un atributo de lenguaje en su elemento assemblyIdentity . Si en paralelo llega a un ensamblado independiente del idioma y MUI está instalado, busca en paralelo las siguientes ubicaciones mediante la siguiente secuencia para <assemblyname.mui>. En paralelo, usa la misma secuencia de búsqueda si el ensamblado es independiente de la referencia cultural, excepto < que no se busca ningún idioma>.

  1. Busca en paralelo la carpeta WinSxS para <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>

Por ejemplo, si la búsqueda en paralelo busca el ensamblado privado en c:\myapp\myasm\myasm.manifest y myasm es un ensamblado independiente del lenguaje. A continuación, usa la siguiente secuencia para buscar myasm.mui. Tenga en cuenta que en paralelo no buscará un ensamblado MUI independiente del idioma.

  1. WinSxS busca en paralelo la versión fr-be del ensamblado 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. Busca en paralelo WinSxS la versión fr del ensamblado MUI.
  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. Busca en paralelo winSxS la versión en us del ensamblado 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. Busca en paralelo WinSxS la versión en del ensamblado 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