共用方式為


元件搜尋順序

如果隔離的應用程式指定元件相依性,並排先在 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. \\ <user 的語言文化> 特性\ <assemblyname.mui>
  3. \\ <user 的語言> \ <assemblyname.mui>
  4. \\ <system 的語言文化特性> \ <assemblyname.mui>
  5. \\ <system 的語言> \ <assemblyname.mui>
  6. \\ <no language> \ <assemblyname.mui>

例如,如果並存搜尋會在 c:\myapp\myasm\myasm.manifest 找到私人元件,而 myasm 是語言中性元件。 然後並存使用下列順序來搜尋 myasm.mui。 請注意,並排不會搜尋語言中性 MUI 元件。

  1. 並存搜尋 WinSxS 以取得 MUI 元件的 fr-be 版本。
  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