共用方式為


組件搜尋順序

如果隔離的應用程式指定元件相依性,Side-by-Side 會先在 WinSxS 資料夾中的 共用元件 之間搜尋該元件。 如果找不到必要的元件,則並存搜尋應用程式目錄結構資料夾中所安裝的私人元件。

私人元件 可以部署在應用程式目錄結構中的下列位置:

  • 在應用程式的資料夾中。 一般而言,這是包含應用程式可執行文件的資料夾。
  • 在應用程式資料夾的子資料夾中。 子資料夾的名稱必須與元件相同。
  • 在應用程式資料夾的語言特定子資料夾中。 子資料夾的名稱是指出語言文化特性或語言的 DHTML 語言代碼字串。
  • 在應用程式資料夾內部語言特定子資料夾中的子資料夾中。 較高子資料夾的名稱是指出語言文化特性或語言的 DHTML 語言代碼字串。 更深層的子資料夾名稱與元件相同。

第一次並排搜尋私用元件時,它會判斷應用程式目錄結構中是否存在特定語言的子資料夾。 如果沒有語言特定的子資料夾存在,則使用下列順序,並排搜尋下列位置中的私用元件。

  1. 以並列方式搜尋 WinSxS 資料夾。
  2. \\<appdir>\<assemblyname>.DLL
  3. \\<appdir>\<assemblyname>.manifest
  4. \\<appdir>\<assemblyname>\<assemblyname>.DLL
  5. \\<appdir>\<assemblyname>\<assemblyname>.manifest

如果存在特定語言的子資料夾,應用程式的目錄結構可能會包含已被多種語言本地化的私人組件。 並排搜尋語言特定子資料夾,以確保應用程式使用指定的語言或最佳可用語言。 特定語言子資料夾會使用指定語言文化特性或語言的 DHTML 語言代碼字串來命名。 如果有特定語言的子資料夾存在,則依照下列順序在下面位置中並排搜尋私用元件。

  1. 以併排模式搜尋 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

請注意,並存搜尋順序會尋找具有元件名稱的 DLL 檔案,並在搜尋具有元件名稱的指令清單檔之前停止。 處理 DLL 私用元件的建議方式,是將元件指令清單放在 DLL 檔案中做為資源。 資源標識碼必須等於 1,而私用元件的名稱可能與 DLL 的名稱相同。 例如,如果 DLL 的名稱是 MICROSOFT.WINDOWS.MYSAMPLE.DLL,則元件說明文件中 assemblyIdentity 元素使用的 name 屬性值也可為 Microsoft.Windows.mysample。 或者,您可以將元件指令清單放在個別的檔案中,但是,元件的名稱及其指令清單必須與 DLL 的名稱不同。 例如,Microsoft.Windows.mysampleAsm、Microsoft.Windows.mysampleAsm.manifest 和 MICROSOFT.WINDOWS.MYSAMPLE.DLL。

例如,如果 myapp 安裝在磁碟驅動器 c 的根目錄中,而且需要比利時法文的 myasm,並排使用下列序列來搜尋 myasm 當地語系化實例的最佳近似值。

  1. 並排搜尋 WinSxS 以取得 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. 並排搜尋 WinSxS 以取得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. 並行搜尋 WinSxS 以找到 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. 並行搜尋 WinSxS 中的 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. 並排搜尋 WinSxS 的無語言版本。
  22. c:\myapp\myasm.dll
  23. c:\myapp\myasm.manifest
  24. c:\myapp\myasm\myasm.dll
  25. c:\myapp\myasm\myasm.manifest

如果併置搜尋達到組件的語言中性版本,且系統上存在 多重語言使用者介面(MUI) 版本的 Windows,則併置會嘗試綁定至 <assemblyname>.mui。 如果搜尋達到元件的當地語系化版本,則並存不會嘗試系結至 <assemblyname>.mui。 語言中性元件 元件指令清單在其 assemblyIdentity 元素中不會有語言屬性。 如果並存模式到達語言中性的元件組並且已安裝 MUI,則並存會按照以下順序搜尋下列位置:<assemblyname>.mui。 如果元件為文化特性中性,則並存使用相同的搜尋順序,但不會搜尋任何語言><除外。

  1. 並排搜尋 WinSxS 資料夾是否有 <assemblyname>.mui。
  2. \\<使用者的語言文化>\<assemblyname>.mui
  3. \\<使用者語言>\<assemblyname>.mui
  4. \\<系統的語言文化特性>\<assemblyname>.mui
  5. \\<系統的語言>\<assemblyname>.mui
  6. \\<沒有語言>\<assemblyname>.mui

例如,如果並存搜尋會在 c:\myapp\myasm\myasm.manifest 找到私用元件,且 myasm 是語言中性元件。 併置功能然後使用下列順序來搜尋 myasm.mui。 請注意,並存技術不會搜尋語言中性的 MUI 組件。

  1. 為了找到 fr-be 版本的 MUI 元件,系統會在 WinSxS 中進行並排搜尋。
  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. 並存搜尋 WinSxS 以取得 MUI 元件的fr版本。
  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. 並行搜尋 WinSxS 中 MUI 組件的 en-us 版本。
  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. 並排地在 WinSxS 中搜尋以取得 MUI 組件的 en 版本。
  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