Assemblysuchsequenz

Wenn eine isolierte Anwendung eine Assemblyabhängigkeit angibt, sucht zuerst parallel nach der Assembly unter den freigegebenen Assemblys im Ordner WinSxS. Wenn die erforderliche Assembly nicht gefunden wird, sucht parallel nach einer privaten Assembly, die in einem Ordner der Verzeichnisstruktur der Anwendung installiert ist.

Private Assemblys können an den folgenden Speicherorten in der Verzeichnisstruktur der Anwendung bereitgestellt werden:

  • Im Ordner der Anwendung. In der Regel ist dies der Ordner, der die ausführbare Datei der Anwendung enthält.
  • In einem Unterordner im Ordner der Anwendung. Der Unterordner muss den gleichen Namen wie die Assembly haben.
  • In einem sprachspezifischen Unterordner im Ordner der Anwendung. Der Name des Unterordners ist eine Zeichenfolge von DHTML-Sprachcodes, die eine Sprachkultur oder Sprache angeben.
  • In einem Unterordner eines sprachspezifischen Unterordners im Ordner der Anwendung. Der Name des höheren Unterordners ist eine Zeichenfolge von DHTML-Sprachcodes, die eine Sprachkultur oder Sprache angeben. Der tiefere Unterordner hat den gleichen Namen wie die Assembly.

Bei der ersten parallelen Suche nach einer privaten Assembly wird bestimmt, ob in der Verzeichnisstruktur der Anwendung ein sprachspezifischer Unterordner vorhanden ist. Wenn kein sprachspezifischer Unterordner vorhanden ist, sucht parallel nach der privaten Assembly an den folgenden Speicherorten mithilfe der folgenden Sequenz.

  1. Parallel durchsucht den Ordner WinSxS.
  2. \\<appdir>\<assemblyname>.DLL
  3. \\<appdir>\<assemblyname.manifest>
  4. \\<appdir>\<assemblyname>\<assemblyname>.DLL
  5. \\<appdir>\<assemblyname>\<assemblyname.manifest>

Wenn ein sprachspezifischer Unterordner vorhanden ist, kann die Verzeichnisstruktur der Anwendung die private Assembly enthalten, die in mehreren Sprachen lokalisiert ist. Parallel durchsucht die sprachspezifischen Unterordner, um sicherzustellen, dass die Anwendung die angegebene Sprache oder die beste verfügbare Sprache verwendet. Sprachspezifische Unterordner werden mithilfe einer Zeichenfolge von DHTML-Sprachcodes benannt, die eine Sprachkultur oder Sprache angeben. Wenn ein sprachspezifischer Unterordner vorhanden ist, sucht parallel nach der privaten Assembly an den folgenden Speicherorten mithilfe der folgenden Sequenz.

  1. Parallel durchsucht den Ordner 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>

Beachten Sie, dass die parallele Suchsequenz eine DLL-Datei mit dem Namen der Assembly findet und beendet wird, bevor nach einer Manifestdatei mit dem Namen der Assembly gesucht wird. Die empfohlene Methode zum Behandeln einer privaten Assembly, die eine DLL ist, besteht darin, das Assemblymanifest in der DLL-Datei als Ressource zu platzieren. Die Ressourcen-ID muss gleich 1 sein, und der Name der privaten Assembly kann mit dem Namen der DLL übereinstimmen. Wenn der Name der DLL beispielsweise MICROSOFT.WINDOWS.MYSAMPLE.DLL ist, kann der Wert des name-Attributs, das im assemblyIdentity-Element des Assemblymanifests verwendet wird, auch Microsoft.Windows.mysample sein. Alternativ können Sie das Assemblymanifest in eine separate Datei einfügen, jedoch müssen sich der Name der Assembly und ihres Manifests dann vom Namen der DLL unterscheiden. Beispielsweise Microsoft.Windows.mysampleAsm, Microsoft.Windows.mysampleAsm.manifest und MICROSOFT.WINDOWS.MYSAMPLE.DLL.

Wenn myapp beispielsweise im Stammverzeichnis von Laufwerk c: installiert ist und myasm auf Französisch-Belgien erfordert, wird parallel die folgende Sequenz verwendet, um nach der besten Näherung für eine lokalisierte instance von myasm zu suchen.

  1. Parallel durchsucht WinSxS nach der fr-be-Version.
  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. Parallel sucht WinSxS nach der fr-Version.
  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. Parallel durchsucht WinSxS nach der en-us-Version.
  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. Parallel durchsucht WinSxS nach der en-Version.
  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. Parallel durchsucht WinSxS nach der Version ohne Sprache.
  22. c:\myapp\myasm.dll
  23. c:\myapp\myasm.manifest
  24. c:\myapp\myasm\myasm.dll
  25. c:\myapp\myasm\myasm.manifest

Wenn die parallele Suche eine sprachneutrale Version der Assembly erreicht und eine MUI-Version (Multilanguage User Interface) von Windows auf dem System vorhanden ist, wird parallel versucht, eine Bindung an assemblyname.mui> durchzuführen<. Versucht nicht parallel, eine Bindung an assemblyname.mui> durchzuführen<, wenn die Suche eine lokalisierte Version der Assembly erreicht. Das Assemblymanifest einer sprachneutralen Assembly verfügt im assemblyIdentity-Element nicht über ein Sprachattribute. Wenn eine sprachneutrale Assembly parallel erreicht und MUI installiert ist, durchsucht parallel die folgenden Speicherorte unter Verwendung der folgenden Sequenz nach <assemblyname.mui>. Parallel verwendet die gleiche Suchsequenz, wenn die Assembly kulturneutral ist, außer <dass keine Sprache> durchsucht wird.

  1. Parallel durchsucht den Ordner < WinSxS nach 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>

Beispielsweise, wenn die parallele Suche die private Assembly unter c:\myapp\myasm\myasm.manifest findet und myasm eine sprachneutrale Assembly ist. Parallel wird dann die folgende Sequenz verwendet, um nach myasm.mui zu suchen. Beachten Sie, dass parallel nicht nach einer sprachneutralen MUI-Assembly gesucht wird.

  1. Parallel durchsucht WinSxS nach der fr-be-Version der MUI-Assembly.
  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. Parallel sucht WinSxS nach der fr-Version der MUI-Assembly.
  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. Parallel durchsucht WinSxS nach der en-us-Version der MUI-Assembly.
  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. Parallel durchsucht WinSxS nach der en-Version der MUI-Assembly.
  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