Dela via


Sekvens för sammansättningssökning

Om ett isolerat program anger ett sammansättningsberoende, söks först parallellt efter sammansättningen bland de delade sammansättningarna i WinSxS-mappen. Om den nödvändiga assemblyn inte hittas, söker side-by-side-funktionen efter en privat assembly som är installerad i en mapp i applikationens katalogstruktur.

Privata sammansättningar kan distribueras på följande platser i programmets katalogstruktur:

  • I programmets mapp. Det här är vanligtvis mappen som innehåller programmets körbara fil.
  • I en undermapp i programmets mapp. Undermappen måste ha samma namn som sammansättningen.
  • I en språkspecifik undermapp i programmets mapp. Namnet på undermappen är en sträng med DHTML-språkkoder som anger en språkkultur eller ett språk.
  • I en undermapp till en språkspecifik undermapp i programmets mapp. Namnet på den högre undermappen är en sträng med DHTML-språkkoder som anger en språkkultur eller ett språk. Den djupare undermappen har samma namn som assemblyn.

Första gången som parallellsökningar söker efter en privat sammanställning avgör den om det finns en språkspecifik undermapp i applikationens katalogstruktur. Om det inte finns någon språkspecifik undermapp söker du sida vid sida efter den privata sammansättningen på följande platser med hjälp av följande sekvens.

  1. Parallellsökning av WinSxS-mappen.
  2. \\<appdir>\<assemblyname>.DLL
  3. \\<appdir>\<assemblyname>.manifest
  4. \\<appdir>\<assemblyname>\<assemblyname>.DLL
  5. \\<appdir>\<assemblyname>\<assemblyname>.manifest

Om det finns en språkspecifik undermapp kan programmets katalogstruktur innehålla den privata sammansättningen lokaliserad på flera språk. Sida vid sida söker de språkspecifika undermapparna för att säkerställa att programmet använder det angivna språket eller det bästa tillgängliga språket. Språkspecifika undermappar namnges med en sträng med DHTML-språkkoder som anger en språkkultur eller ett språk. Om det finns en språkspecifik undermapp söker du sida vid sida efter den privata sammansättningen på följande platser med hjälp av följande sekvens.

  1. Sida vid sida söker i WinSxS-mappen.
  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

Observera att sekvensen vid sida-vid-sida-sökning hittar en DLL-fil med assembléns namn och slutar innan den börjar söka efter en manifestfil med assembléns namn. Det rekommenderade sättet att hantera en privat sammansättning som är en DLL är att placera sammansättningsmanifestet i DLL-filen som en resurs. Resurs-ID:t måste vara lika med 1 och namnet på den privata sammansättningen kan vara samma som namnet på DLL:t. Om namnet på DLL till exempel är MICROSOFT. WINDOWS. MYSAMPLE.DLL kan värdet för det namnattribut som används i assemblyIdentity-elementet i sammansättningens manifest också vara Microsoft.Windows.mysample. Alternativt kan du placera sammansättningsmanifestet i en separat fil, men namnet på sammansättningen och dess manifest måste då skilja sig från namnet på DLL:en. Till exempel Microsoft.Windows.mysampleAsm, Microsoft.Windows.mysampleAsm.manifest och MICROSOFT. WINDOWS. MYSAMPLE.DLL.

Om myapp till exempel är installerat i roten på enhet c: och kräver myasm i fransk-belgiska, använder parallellt följande sekvens för att hitta den bästa motsvarigheten till en lokaliserad instans av myasm.

  1. WinSxS söker parallellt efter version 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. Parallellt söker WinSxS efter fr-versionen.
  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 söker parallellt efter version 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. Parallellt söker WinSxS efter den engelska versionen.
  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. Parallellt söker WinSxS efter den språkoberoende versionen.
  22. c:\myapp\myasm.dll
  23. c:\myapp\myasm.manifest
  24. c:\myapp\myasm\myasm.dll
  25. c:\myapp\myasm\myasm.manifest

Om sökningen sida vid sida når en språkneutral version av sammansättningen och en Multilanguage User Interface (MUI) version av Windows finns i systemet, försöker du sedan binda till <sammansättningsnamn>.mui. Sida vid sida försöker inte binda till <sammansättningsnamn>.mui om sökningen når en lokaliserad version av sammansättningen. sammansättningsmanifestet för en språkneutral sammansättning kommer inte att ha något språkattribut i sitt assemblyIdentity-element. Om sidvidsid når en språkneutral sammansättning och MUI är installerad, söker sidvidsid på följande platser i följande ordning efter <sammansättningsnamn>.mui. Sida vid sida använder samma söksekvens om sammansättningen är kulturneutral, förutom <inget språk> inte genomsöks.

  1. Side-by-side söker i WinSxS-mappen efter <assemblyname>.mui.
  2. \\<användarens språkkultur>\<sammansättningsnamn>.mui
  3. \\<användarens språk>\<sammansättningsnamn>.mui
  4. \\<systemets språkkultur>\<sammansättningsnamn>.mui
  5. \\<systemets språk>\<sammansättningsnamn>.mui
  6. \\<inget språk>\<sammansättningsnamn>.mui

Om till exempel sökning sida vid sida hittar den privata sammansättningen på c:\myapp\myasm\myasm.manifest och myasm är en språkneutral sammansättning. Sida vid sida använder sedan följande sekvens för att söka efter myasm.mui. Observera att sida vid sida inte söker efter en språkneutral MUI-sammansättning.

  1. WinSxS söker parallellt efter version fr-be av MUI-sammansättningen.
  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. Side-by-side söker WinSxS efter den franska versionen av MUI-assemblin.
  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. Sida vid sida söker WinSxS efter den en-us versionen av MUI-sammansättningen.
  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. Parallellt söker WinSxS efter en en-version av MUI-sammansättningen.
  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