Condividi tramite


Sequenza di ricerca assembly

Se un'applicazione isolata specifica una dipendenza dell'assembly, cerca innanzitutto l'assembly tra gli assembly condivisi nella cartella WinSxS. Se l'assembly richiesto non viene trovato, cerca un assembly privato installato in una cartella della struttura di directory dell'applicazione.

Gli assembly privati possono essere distribuiti nei percorsi seguenti nella struttura di directory dell'applicazione:

  • Nella cartella dell'applicazione. In genere, si tratta della cartella contenente il file eseguibile dell'applicazione.
  • In una sottocartella nella cartella dell'applicazione. La sottocartella deve avere lo stesso nome dell'assembly.
  • In una sottocartella specifica della lingua nella cartella dell'applicazione. Il nome della sottocartella è una stringa di codici di lingua DHTML che indicano una lingua o una lingua.
  • In una sottocartella di una sottocartella specifica della lingua nella cartella dell'applicazione. Il nome della sottocartella superiore è una stringa di codici di lingua DHTML che indicano una lingua o una lingua. La sottocartella più profonda ha lo stesso nome dell'assembly.

La prima volta che esegue la ricerca side-by-side di un assembly privato, determina se esiste una sottocartella specifica della lingua nella struttura di directory dell'applicazione. Se non esiste alcuna sottocartella specifica del linguaggio, la ricerca side-by-side dell'assembly privato nei percorsi seguenti usa la sequenza seguente.

  1. Esegue una ricerca side-by-side nella cartella WinSxS.
  2. \\<appdir>\<assemblyname>.DLL
  3. \\<appdir>\<assemblyname.manifest>
  4. \\<appdir>\<assemblyname\<assemblyname>>.DLL
  5. \\<appdir>\<assemblyname>\<assemblyname.manifest>

Se esiste una sottocartella specifica della lingua, la struttura di directory dell'applicazione può contenere l'assembly privato localizzato in più lingue. Esegue una ricerca affiancata nelle sottocartelle specifiche della lingua per assicurarsi che l'applicazione usi la lingua specificata o la lingua migliore disponibile. Le sottocartelle specifiche della lingua vengono denominate usando una stringa di codici di lingua DHTML che specificano una lingua o una lingua. Se esiste una sottocartella specifica della lingua, la ricerca side-by-side dell'assembly privato nei percorsi seguenti viene eseguita usando la sequenza seguente.

  1. Esegue una ricerca side-by-side nella cartella 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>>

Si noti che la sequenza di ricerca side-by-side trova un file DLL con il nome dell'assembly e si arresta prima di cercare un file manifesto con il nome dell'assembly. Il modo consigliato per gestire un assembly privato che è una DLL consiste nell'inserire il manifesto dell'assembly nel file DLL come risorsa. L'ID risorsa deve essere uguale a 1 e il nome dell'assembly privato può essere uguale al nome della DLL. Ad esempio, se il nome della DLL è MICROSOFT.WINDOWS.MYSAMPLE.DLL, il valore dell'attributo name usato nell'elemento assemblyIdentity del manifesto dell'assembly può anche essere Microsoft.Windows.mysample. In alternativa, è possibile inserire il manifesto dell'assembly in un file separato, ma il nome dell'assembly e il relativo manifesto devono quindi essere diversi dal nome della DLL. Ad esempio, Microsoft.Windows.mysampleAsm, Microsoft.Windows.mysampleAsm.manifest e MICROSOFT.WINDOWS.MYSAMPLE.DLL.

Ad esempio, se myapp è installato nella radice dell'unità c: e richiede myasm in francese-belga, side-by-side usa la sequenza seguente per cercare l'approssimazione migliore in un'istanza localizzata di myasm.

  1. Side-by-side cerca in WinSxS la versione 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. Esegue una ricerca side-by-side in WinSxS per la versione 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. Side-by-side cerca in WinSxS la versione 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. Side-by-side cerca in WinSxS la versione 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. Side-by-side cerca in WinSxS la versione senza lingua.
  22. c:\myapp\myasm.dll
  23. c:\myapp\myasm.manifest
  24. c:\myapp\myasm\myasm.dll
  25. c:\myapp\myasm\myasm.manifest

Se la ricerca side-by-side raggiunge una versione indipendente dalla lingua dell'assembly e una versione MUI (Multilanguage User Interface) di Windows è presente nel sistema, tenta di eseguire il binding a <assemblyname.mui>. Side-by-side non tenta di eseguire l'associazione a <assemblyname.mui> se la ricerca raggiunge una versione localizzata dell'assembly. Il manifesto dell'assembly di un assembly indipendente dalla lingua non avrà un attributo language nell'elemento assemblyIdentity . Se side-by-side raggiunge un assembly indipendente dalla lingua e MUI è installato, esegue una ricerca side-by-side nei percorsi seguenti usando la sequenza seguente per <assemblyname.mui>. Side-by-side usa la stessa sequenza di ricerca se l'assembly è indipendente dalle impostazioni cultura, ad eccezione < di nessuna lingua> in cui non viene eseguita la ricerca.

  1. Side-by-side cerca assemblyname.mui> nella cartella < WinSxS.
  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>

Ad esempio, se la ricerca side-by-side trova l'assembly privato in c:\myapp\myasm\myasm.manifest e myasm è un assembly indipendente dal linguaggio. Viene quindi usata la sequenza seguente per cercare myasm.mui. Si noti che side-by-side non cercherà un assembly MUI indipendente dalla lingua.

  1. Side-by-side cerca in WinSxS la versione fr-be dell'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. Side-by-side cerca in WinSxS la versione fr dell'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. Side-by-side cerca in WinSxS la versione en-us dell'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. Side-by-side cerca in WinSxS la versione en dell'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