Séquence de recherche d’assemblys

Si une application isolée spécifie une dépendance d’assembly, recherche d’abord l’assembly côte à côte parmi les assemblys partagés dans le dossier WinSxS. Si l’assembly requis est introuvable, recherche côte à côte un assembly privé installé dans un dossier de la structure de répertoires de l’application.

Les assemblys privés peuvent être déployés aux emplacements suivants dans la structure de répertoires de l’application :

  • Dans le dossier de l’application. En règle générale, il s’agit du dossier contenant le fichier exécutable de l’application.
  • Dans un sous-dossier dans le dossier de l’application. Le sous-dossier doit avoir le même nom que l’assembly.
  • Dans un sous-dossier spécifique à la langue dans le dossier de l’application. Le nom du sous-dossier est une chaîne de codes de langage DHTML indiquant une culture ou une langue.
  • Dans un sous-dossier d’un sous-dossier spécifique à la langue dans le dossier de l’application. Le nom du sous-dossier supérieur est une chaîne de codes de langage DHTML indiquant une culture ou une langue. Le sous-dossier plus profond porte le même nom que l’assembly.

La première recherche côte à côte d’un assembly privé détermine si un sous-dossier spécifique à la langue existe dans la structure de répertoires de l’application. S’il n’existe aucun sous-dossier spécifique à la langue, recherche côte à côte l’assembly privé aux emplacements suivants à l’aide de la séquence suivante.

  1. Recherche côte à côte dans le dossier WinSxS.
  2. \\<appdir>\<assemblyname>.DLL
  3. \\<appdir>\<assemblyname.manifest>
  4. \\<appdir>\<assemblyname>\<assemblyname>.DLL
  5. \\<appdir>\<assemblyname>\<assemblyname.manifest>

S’il existe un sous-dossier spécifique à la langue, la structure de répertoires de l’application peut contenir l’assembly privé localisé dans plusieurs langues. Recherche côte à côte dans les sous-dossiers propres à la langue pour s’assurer que l’application utilise la langue spécifiée ou la meilleure langue disponible. Les sous-dossiers propres à la langue sont nommés à l’aide d’une chaîne de codes de langage DHTML qui spécifient une culture ou une langue. S’il existe un sous-dossier spécifique à la langue, recherche côte à côte l’assembly privé aux emplacements suivants à l’aide de la séquence suivante.

  1. Recherche côte à côte dans le dossier 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><

Notez que la séquence de recherche côte à côte recherche un fichier DLL avec le nom de l’assembly et s’arrête avant de rechercher un fichier manifeste portant le nom de l’assembly. La méthode recommandée pour gérer un assembly privé qui est une DLL consiste à placer le manifeste d’assembly dans le fichier DLL en tant que ressource. L’ID de ressource doit être égal à 1 et le nom de l’assembly privé peut être identique au nom de la DLL. Par exemple, si le nom de la DLL est MICROSOFT.WINDOWS.MYSAMPLE.DLL, la valeur de l’attribut name utilisé dans l’élément assemblyIdentity du manifeste de l’assembly peut également être Microsoft.Windows.mysample. En guise d’alternative, vous pouvez placer le manifeste de l’assembly dans un fichier distinct. Toutefois, le nom de l’assembly et son manifeste doivent alors être différents du nom de la DLL. Par exemple, Microsoft.Windows.mysampleAsm, Microsoft.Windows.mysampleAsm.manifest et MICROSOFT.WINDOWS.MYSAMPLE.DLL.

Par exemple, si myapp est installé à la racine du lecteur c: et nécessite myasm dans Français-Belgian, côte à côte utilise la séquence suivante pour rechercher la meilleure approximation d’une instance localisée de myasm.

  1. Recherche la version fr-be dans WinSxS côte à côte.
  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. Recherche côte à côte dans WinSxS la version 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. Recherche la version en-us dans WinSxS côte à côte.
  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. Recherche la version en dans WinSxS côte à côte.
  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. Recherche côte à côte dans WinSxS la version sans langue.
  22. c:\myapp\myasm.dll
  23. c:\myapp\myasm.manifest
  24. c:\myapp\myasm\myasm.dll
  25. c:\myapp\myasm\myasm.manifest

Si la recherche côte à côte atteint une version indépendante de la langue de l’assembly et qu’une version d’interface utilisateur multilingue (MUI) de Windows est présente sur le système, côte à côte tente de lier à <assemblyname.mui>. Côte à côte ne tente pas de lier à <assemblyname.mui> si la recherche atteint une version localisée de l’assembly. Le manifeste d’assembly d’un assembly indépendant de la langue n’aura pas d’attribut language dans son élément assemblyIdentity . Si côte à côte atteint un assembly indépendant de la langue et que muI est installé, recherche côte à côte les emplacements suivants à l’aide de la séquence suivante pour <assemblyname.mui>. Côte à côte utilise la même séquence de recherche si l’assembly est indépendant de la culture, sauf qu’aucune <langue> n’est recherchée.

  1. Recherche côte à côte dans le dossier < 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>

Par exemple, si la recherche côte à côte recherche l’assembly privé dans c:\myapp\myasm\myasm.manifest, et si myasm est un assembly indépendant du langage. Côte à côte utilise ensuite la séquence suivante pour rechercher myasm.mui. Notez que côte à côte ne recherche pas un assembly MUI indépendant de la langue.

  1. Recherche côte à côte dans WinSxS la version fr-be de l’assembly 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. Recherche côte à côte dans WinSxS la version fr de l’assembly 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. Recherche côte à côte dans WinSxS la version en-us de l’assembly 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. Recherche côte à côte dans WinSxS la version en de l’assembly 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