RuntimeCompatibilityOptions 類別

定義

你的應用程式可以用這個類別來設定 Windows 應用程式 執行時對服務更新變更行為所需的相容性選項。 此類別僅用於設定執行時行為,無法查詢所套用的選項。

public ref class RuntimeCompatibilityOptions sealed
/// [Windows.Foundation.Metadata.Activatable(65536, "Microsoft.Windows.ApplicationModel.WindowsAppRuntime.RuntimeCompatibilityContract")]
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.Windows.ApplicationModel.WindowsAppRuntime.RuntimeCompatibilityContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class RuntimeCompatibilityOptions final
[Windows.Foundation.Metadata.Activatable(65536, "Microsoft.Windows.ApplicationModel.WindowsAppRuntime.RuntimeCompatibilityContract")]
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.Windows.ApplicationModel.WindowsAppRuntime.RuntimeCompatibilityContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class RuntimeCompatibilityOptions
function RuntimeCompatibilityOptions()
Public NotInheritable Class RuntimeCompatibilityOptions
繼承
Object Platform::Object IInspectable RuntimeCompatibilityOptions
屬性

備註

你可以用兩種方式部署 Windows 應用程式 SDK:依賴框架的;或是自包含的。 詳情及優點與問題,請參閱 Windows 應用程式 SDK 部署概述

RuntimeCompatibilityOptions 類別提供應用程式可配置的相容性。 它的目的是避免依賴 Framework 部署的問題,讓你的應用程式能放心使用這個選項,知道不會被破壞。

此外,如果你在服務版本中發現相容性問題,仍可暫時停用有問題的變更繼續前進。 即使是自給自足的應用程式,也能有信心透過應用程式配置的相容性來確保更新成功。

RuntimeCompatibilityOptions 提供 API 來控制服務變更的行為。 你也可以在應用程式的專案檔案中設定屬性,自動使用指定值的新 API。

RuntimeCompatibilityOptions 會設定 Windows 應用程式 SDK 服務版本中哪些變更被啟用。 預設情況下,所有變更皆為啟用,但你可以使用 RuntimeCompatibilityOptions 將執行時行為鎖定在指定的補丁層級,或停用特定變更:

  1. 選擇補丁等級: 你可以指定想要使用哪個服務版本的行為。 例如,你的應用程式可以指定要 1.7.2 的補丁等級行為,這樣即使安裝的是 1.7.3 或更新版本,Windows 應用程式 SDK 也會在該修補程式層級執行。 這項功能讓你能控制應用程式何時獲得新的修正或行為變更,即使你沒有使用自包含模式。
  2. 暫時停用特定變更: 如果你的應用程式在服務更新中遇到特定變更的問題,你可以只停用該變更,同時仍能享受該更新中其他的變更或功能。 所有變更預設都會根據所使用的補丁等級啟用。 停用變更只是暫時措施,給你時間在未來的 Windows 應用程式 SDK 更新中釋出修正,或讓你在應用程式中實作更新。

這裡有一個範例,用來指定補丁等級,並停用特定變更:

void ApplyRuntimeCompatibilityOptions() 
{
    var compatibilityOptions = new RuntimeCompatibilityOptions();
    compatibilityOptions.PatchLevel1 = new WindowsAppRuntimeVersion(1,7,3);
    compatibilityOptions.PatchLevel2 = new WindowsAppRuntimeVersion(1,8,2);
    compatibilityOptions.DisabledChanges.Add(RuntimeCompatibilityChange.SampleApiCrashFix);
    compatibilityOptions.Apply();
}

您必須在流程早期、呼叫其他 Windows 應用程式 SDK API 之前,或在初始化 Windows 應用程式 執行時後立即套用 RuntimeCompatibilityOptions

PatchLevel1PatchLevel2 只是兩個欄位,用來設定相關的補丁等級。 這些不一定與特定版本的 Windows 應用程式 執行時相符,也不一定有特定順序。 例如,將 PatchLevel1 設為 1.8.2,將 PatchLevel2 設為 1.7.3 是合理的。 在上述例子中,當應用程式更新到 1.9 時,你也可以選擇直接將 PatchLevel1 更新到 1.9.3,而 PatchLevel2 則保留為 1.8.2。

在應用程式專案檔案中指定 RuntimeCompatibilityOptions

或者,你也可以使用應用程式的專案檔案來指定修補程式等級和停用的變更,而不是直接使用 RuntimeCompatibilityOptions。 這種做法的優點是能確保選擇權能在適當時機及早應用。 這裡有一個範例,說明如何在專案檔案中指定補丁層級和禁用的變更(例如 .csproj or .vcxproj):

<PropertyGroup>
  <WindowsAppSDKRuntimePatchLevel1>1.7.3</WindowsAppSDKRuntimePatchLevel1>
  <WindowsAppSDKRuntimePatchLevel2>1.8.2</WindowsAppSDKRuntimePatchLevel2>
  <WindowsAppSDKDisabledChanges>SampleApiCrashFix, OtherSampleApiCrashFix</WindowsAppSDKDisabledChanges>
</PropertyGroup>

WindowsAppSDKDisabledChanges 屬性是一個逗號分隔的 RuntimeCompatibilityChange 可停用值清單。

未指定 PatchLevel 的行為

若未指定 PatchLevel1PatchLevel2 ,或兩者值皆不符合所使用的執行時 major.minor 版本,則執行時將使用最新的補丁等級。 換句話說,執行時會啟用所有服務變更(就像 Windows 應用程式 SDK 如果沒用這個 API 時的運作方式一樣)。

建構函式

名稱 Description
RuntimeCompatibilityOptions()

建立一個新的預設 RuntimeCompatibilityOptions 物件。

屬性

名稱 Description
DisabledChanges

可以設定或設定一個可選的服務變更清單來停用。

Windows 應用程式 SDK 的最新穩定頻道發布說明列出了每個可停用的變更名稱。

PatchLevel1

若執行版本與 major.minor 版本相符,則會取得或設定可選的補丁等級。

如果你的應用程式尚未在轉換到新版 Windows 應用程式 SDK,則只能設定這個補丁等級。

PatchLevel2

若執行版本與 major.minor 版本相符,則會取得或設定可選的補丁等級。

此特性允許設定第二個修補等級,幫助你的應用程式轉換到新版本的 Windows 應用程式 SDK。 這方便於在轉換過程中同時指定舊版與新版的補丁等級。 尚未轉換的應用程式應該只設定他們想使用的補丁等級。

不允許同時設定同一 major .minor 版本(如 1.7.3 和 1.7.4)的兩個補丁等級,且呼叫 Apply 時會產生錯誤。

方法

名稱 Description
Apply()

將相容性選項套用到執行時。

適用於