指定您的應用程式使用的預設資源

如果您的應用程式沒有符合客戶裝置特定設定的資源,則會使用應用程式的預設資源。 本主題說明如何指定這些預設資源的內容。

當客戶從 Microsoft Store 安裝您的應用程式時,客戶的裝置上的設定會與應用程式的可用資源相符。 完成此比對,因此只需要為該使用者下載並安裝適當的資源。 例如,會使用使用者語言喜好設定最適當的字串和影像,以及裝置的解析度和 DPI 設定。 例如,200scale 的預設值,但如果您願意,您可以覆寫該預設值。

即使對於未進入自己的資源套件的資源 (例如針對高對比度設定量身打造的影像),如果找不到符合使用者設定的資源,您可以在執行階段指定應用程式應該使用的預設資源。 例如,standardcontrast 的預設值,但如果您願意,您可以覆寫該預設值。

這些預設值是以預設資源限定詞值的形式指定。 有關資源限定詞是什麼、它們的用途和目的的說明,請參閱針對語言、縮放比例、高對比及其他限定詞量身打造您的資源

您可以使用下列兩種方式之一來設定這些預設值。 您可以將設定檔新增至專案,或者也可以直接編輯專案檔。 使用您最熟悉的選項或最適合您的建置系統的選項。

選項 1。 使用 priconfig.default.xml 來指定預設限定詞值

  1. 在 Visual Studio 中,將新項目新增至您的專案。 選擇 XML 檔案,並將檔案命名為 priconfig.default.xml

  2. 在方案總管中,選取 priconfig.default.xml 並檢查屬性視窗。 檔案的 [建置動作] 應該設定為 [無],而 [複製到輸出目錄] 應該設定為 [不要複製]。

  3. 使用此 XML 取代該檔案的內容。

    <default>
       <qualifier name="Language" value="LANGUAGE-TAG(S)" />
       <qualifier name="Contrast" value="standard" />
       <qualifier name="Scale" value="200" />
       <qualifier name="HomeRegion" value="001" />
       <qualifier name="TargetSize" value="256" />
       <qualifier name="LayoutDirection" value="LTR" />
       <qualifier name="DXFeatureLevel" value="DX9" />
       <qualifier name="Configuration" value="" />
       <qualifier name="AlternateForm" value="" />
    </default>
    

    注意:此值 LANGUAGE-TAG(S) 必須與應用程式的預設語言同步處理。 如果這是單一 BCP-47 語言標籤,則您的應用程式的預設語言需要是相同的標籤。 如果是以逗號分隔的語言標籤清單,則應用程式的預設語言必須是清單中的第一個標籤。 您可以在應用程式套件資訊清單來源檔案 (Package.appxmanifest) 的應用程式索引標籤上的預設語言欄位中設定應用程式的預設語言。

  4. 每個 <qualifier> 元素告訴 Visual Studio 使用什麼值做為每個限定詞名稱的預設值。 對於到目前為止的檔案內容,您實際上尚未變更 Visual Studio 的行為。 換句話說,Visual Studio 的行為就如同此檔案存在這些內容一樣,因為這些是預設值。 因此,若要使用您自己的預設值覆寫預設值,您必須變更檔案中的值。 以下是當您編輯前三個值時,檔案外觀的範例。

    <default>
       <qualifier name="Language" value="de-DE" />
       <qualifier name="Contrast" value="black" />
       <qualifier name="Scale" value="400" />
       <qualifier name="HomeRegion" value="001" />
       <qualifier name="TargetSize" value="256" />
       <qualifier name="LayoutDirection" value="LTR" />
       <qualifier name="DXFeatureLevel" value="DX9" />
       <qualifier name="Configuration" value="" />
       <qualifier name="AlternateForm" value="" />
    </default>
    
  5. 儲存並關閉檔案並重建您的專案。

若要確認已覆寫的預設值已納入考慮,請尋找檔案 <ProjectFolder>\obj\<ReleaseConfiguration folder>\priconfig.xml,並確認其內容符合您的覆寫。 如果這麼做,則您已成功設定應用程式預設將使用之資源的限定詞值。 如果找不到使用者設定的相符項目,則會使用資源,其資料夾或檔名包含您在次設定的預設限定詞。

這是如何運作的?

在幕後,Visual Studio 會啟動一個名為 MakePri.exe 的工具來產生一個稱為套件資源索引 (PRI) 的檔案,該檔案描述了應用程式的所有資源,包括指示哪些是預設資源。 有關此工具的詳細資訊,請參閱使用 MakePri.exe 手動編譯資源。 Visual Studio 會將設定檔傳遞至 MakePri.exepriconfig.default.xml 檔案的內容用做該設定檔的 <default> 元素,該元素指定被視為預設的限定詞值集。 因此,新增和編輯 priconfig.default.xml 最終會影響 Visual Studio 為您的應用程式產生並包含在其應用程式套件中的套件資源索引檔案的內容。

注意:每當您變更 <qualifier name="Language" ... /> 元素的值時,您都需要將該變更與應用程式的預設語言同步。 如此一來,應用程式 PRI 檔案中索引的語言資源就會符合您應用程式的資訊清單預設語言。 <qualifier name="Language" ... /> 元素中的值會覆寫資訊清單中關於 <ProjectFolder>\obj\<ReleaseConfiguration folder>\priconfig.xml 內容的值,但該檔案和應用程式的資訊清單應該要相符。

使用與以下不同的檔案名稱priconfig.default.xml

如果您將檔案命名為 priconfig.default.xml,則 Visual Studio 將識別它並自動使用它。 如果您提供不同的名稱,則必須讓 Visual Studio 知道。 在專案檔案中,在第一個 <PropertyGroup> 元素的開始標記和結束標記之間新增此 XML。

<AppxPriConfigXmlDefaultSnippetPath>FILE-PATH-AND-NAME</AppxPriConfigXmlDefaultSnippetPath>

FILE-PATH-AND-NAME 替換為檔案的路徑和名稱。

選項 2。 使用您的專案檔來指定預設限定詞值

這是選項 1 的替代方案。 一旦您了解選項 1 的運作方式,您可以選擇改為執行選項 2,這更適合您的開發和/或建置工作流程。

在專案檔案中,在第一個 <PropertyGroup> 元素的開始標記和結束標記之間新增此 XML。

<AppxDefaultResourceQualifiers>Language=LANGUAGE-TAG(S)|Contrast=standard|Scale=200|HomeRegion=001|TargetSize=256|LayoutDirection=LTR|DXFeatureLevel=DX9|Configuration=|AlternateForm=</AppxDefaultResourceQualifiers>

以下是在您編輯前三個值之後可能看起來的範例。

<AppxDefaultResourceQualifiers>Language=de-DE|Contrast=black|Scale=400|HomeRegion=001|TargetSize=256|LayoutDirection=LTR|DXFeatureLevel=DX9|Configuration=|AlternateForm=</AppxDefaultResourceQualifiers>

儲存和關閉,並重建您的專案。

注意:每當您變更 Language= 值時,您都需要在資訊清單設計工具中將該變更與應用程式的預設語言同步 (透過開啟 Package.appxmanifest)。