技術 > 資源後備進程
  用於打包和部署資源的輪輻式模型使用後備進程來定位合適的資源。如果一個應用程序的用戶請求不可用的 resourceset,則公共語言運行庫搜索該區域性的層次結構,以查找與該用戶請求最為匹配的適當的後備資源,並且衹在最後迫不得已的情況下纔引發異常。在層次結構的每一級別,衹要發現了適當的資源,運行庫就使用該資源。如果未找到合適的資源,則繼續在下一個級別進行搜索。資源後備進程將在下面的步驟中說明:
  1.運行庫首先檢查全局程序集緩存,以找到與為應用程序請求的區域性匹配的程序集。
  全局程序集緩存可以存儲由許多應用程序共享的資源程序集。這使您免去不得不在您創建的每一應用程序的目錄結構中包括特定資源組之苦。如果運行庫找到了對程序集的引用,則它將搜索該程序集以找到請求的資源。如果它在程序集中找到了該項,將使用請求的資源。如果它沒有找到該項,將繼續搜索。
  2.運行庫接下來檢查當前執行的程序集的目錄以找到與請求的區域性匹配的目錄。如果它找到了匹配的目錄,它將搜索該目錄以找到請求的區域性的有效附屬程序集。然後運行庫搜索該有效附屬程序集以找到請求的資源。如果它在程序集中找到了該資源,則使用這一資源。如果它沒有找到該資源,將繼續搜索。
  3.運行庫接下來再次搜索全局程序集緩存,這一次是為了找到請求的資源的父程序集。如果在全局程序集緩存中存在資源的父程序集,則運行庫搜索該程序集以找到請求的資源。
  父程序集被定義為合適的後備區域性。將父程序集視作最適合的候選;提供任意資源要比引發一個異常更可取。此進程還允許您重複使用資源。衹有在子區域性不需要本地化請求的資源時,您纔需要包括父級別的特定的資源。例如,如果您提供 en(非特定英語)的附屬程序集:en-gb(英國英語)和 en-us(美國英語),則 en 附屬程序集應包含公共術語,並且 en-gb 和 en-us 附屬程序集可能衹對那些不同的術語提供重寫。
  4.運行庫接下來檢查當前執行的程序集的目錄,以查看該目錄中是否包含父目錄。如果存在父目錄,則運行庫搜索該目錄以找到父區域性的有效附屬程序集。如果它找到了有效附屬程序集,則運行庫搜索該程序集以找到請求的資源。如果它找到了該資源,則使用它。如果它沒有找到該資源,將繼續搜索。
  5.運行庫接下來在許多可能的級別搜索父程序集(如前面步驟中所述)。每一區域性衹有一個父區域性,但一個父區域性可能還有其自己的父區域性。
  6.如果對最初指定的區域性以及所有父區域性都進行了搜索但仍然未找到所需資源,則使用默認(後備)區域性的資源。
  註意 默認資源是由主程序集編譯的唯一資源。它是絶對後備(最終的父級)。因此,強烈建議您始終將默認的資源組包括在您的主程序集中。這有助於確保不會引發異常。通過包括默認的資源文件,您可以為所有資源提供後備,並且確保對於該用戶始終提供至少一個資源,即使該資源不是特定於區域性的。
  7.最後,如果運行庫沒有找到默認(後備)區域性的資源,則將引發異常,指出未能找到資源。
  下面舉例說明如何搜索請求的資源,假定用戶請求本地化為墨西哥西班牙語所需的資源。與上述資源命名規則相符,運行庫首先搜索全局程序集緩存以找到與請求的區域性“es-mx”相匹配的程序集。如果沒有找到該程序集,則運行庫搜索當前執行的程序集的目錄以找到“es-mx”目錄。如果也沒有找到該目錄,運行庫再次搜索全局程序集緩存以找到反映適當的後備區域性,在此例子中為“es”(西班牙語)的父程序集。如果沒有找到父程序集,則運行庫搜索所有潛在的父程序集級別以找到“es-mx”區域性,直到找到相應的資源為止。如果還是沒有找到一個合適的資源,則運行庫使用默認區域性的資源。