共用方式為


規則型啟用限制

VisualStudio.Extensibility 中的常見概念之一是使用基於上下文的激活規則。 這些規則會控管向使用者顯示延伸模組或命令的條件。 指令組態中的 VisibleWhen 屬性是環境定義型啟動規則的範例,這個屬性宣告指令何時可見。

條件約束類型

每個約束都定義為ActivationConstraint類型的實例,該實例是使用 ActivationConstraint的工廠方法之一建立的,如 ClientContext

多個啟用條件約束可以使用AndOrNot方法組合在一起。 您也可以使用運算子 &|!來組合啟用限制。

範例定義

在下列範例中,命令組態屬性 EnabledWhen 會定義命令何時處於已啟用狀態。 此 ClientContext 方法是激活約束工廠方法之一。 它會產生啟動條件約束,給定兩個引數、字串和正則運算式模式,以與該字串相符。 因此,下列程式碼指出當使用者選取具有其中一個副檔名的檔案時,會啟用命令。

public override CommandConfiguration CommandConfiguration => new("%My command.DisplayName%")
{
    EnabledWhen = ActivationConstraint.ClientContext(ClientContextKey.Shell.ActiveSelectionFileName, @"\.(jpg|jpeg|txt)$"),
};

類別提供 ClientContextKey 您可以測試的 IDE 狀態資訊範圍;如需值表,請參閱 用戶端內容索引鍵

下列範例示範如何結合多個條件約束:

EnabledWhen = ActivationConstraint.And(
    ActivationConstraint.SolutionState(SolutionState.Exists),
    ActivationConstraint.ClientContext(ClientContextKey.Shell.ActiveEditorFileName, @"\.(jpg|jpeg|txt)$")),

或者,更簡潔地說,使用&運算子:

EnabledWhen =
    ActivationConstraint.SolutionState(SolutionState.Exists) &
    ActivationConstraint.ClientContext(ClientContextKey.Shell.ActiveEditorFileName, @"\.(jpg|jpeg|txt)$")),

啟用條件約束屬性

啟用條件約束可用來設定各種 VisualStudio.Extensibility 功能,包括 載入延伸模組,以及命令的 已啟用可見 狀態。 配置類型包含類型為 ActivationConstraint 的屬性,通常具有 When 後綴,表示當滿足指定條件時,會啟動某些功能。

啟用條件約束工廠方法

本節顯示目前支援的啟用限制清單。 清單上的每個條目都是ActivationConstraint類型的工廠方法。

術語 Description
ClientContext(<鍵>=ClientContextKey, <模式>=<正則表達式>) 當提供的用戶端內容索引鍵符合規則運算式時,為 True。 請參閱 用戶端內容索引鍵
ActiveProjectCapability(<表達式>=ProjectCapability 只要解決方案中存在具有符合所提供子運算式功能的專案,此條件即為真。 運算式可以是類似 VB | CSharp的 。 如需專案功能的詳細資訊,請參閱 專案查詢 API 概觀
ProjectAddedItem(<模式>=<正則表達式>) 當符合「模式」的檔案新增至所開啟解決方案中的專案時,此條件為 true。
SolutionHasProjectCapability(<表達式>=ProjectCapability 只要解決方案具有符合所提供子運算式的功能的專案,則為 True。 運算式可以是類似 VB | CSharp的 。 如需專案功能的詳細資訊,請參閱 專案查詢 API 概觀
SolutionState(<狀態>=SolutionState 當解決方案狀態符合提供的值時為 True,請參閱 解決方案狀態 以 取得值清單。
EditorContentType(<內容類型>) 當作用中的編輯器內容類型是或繼承自特定內容類型時,結果為 True。

基於相容性理由,也支援下列舊版啟用限制:

術語 Description
ActiveProjectBuildProperty(<屬性>=<正則表達式>) 當選取的專案具有指定的建置屬性,且屬性值符合提供的正規表示式模式時,條件為真。
ActiveProjectFlavor(<guid>) 每當選取的專案具有符合指定專案類型 GUID 的類型時,就會為 True。
SolutionHasProjectBuildProperty(<屬性>=<正則表達式>) 當解決方案中的專案載入指定的建置屬性,且該屬性的值符合所提供的正則運算式篩選條件時,該條件為 true。
SolutionHasProjectFlavor(<GUID>) 每當解決方案具有經過調整 (匯總) 的專案,且具有符合指定專案類型 GUID 的類型設定時,都會為 True。
UIContext(<GUID>) 當指定的 UI 內容 在 Visual Studio 實例中處於作用中時,為 True。

解決方案狀態

解決方案狀態是指解決方案及其專案的狀態、解決方案是否已載入、是否有零、一個或多個專案,以及是否正在建置。

對應於解狀態的啟動約束可以像任何其他啟動約束一樣組合。 例如,您可以結合指定FullyLoaded解決方案和SingleProject解決方案的啟用限制,以便在單一專案解決方案完全載入時擷取它們。

this.EnabledWhen = ActivationConstraint.And(
    ActivationConstraint.SolutionState(SolutionState.SingleProject),
    ActivationConstraint.SolutionState(SolutionState.FullyLoaded));

用戶端內容索引鍵

啟用規則也可以利用 使用者端內容 作為其運算式的一部分。

目前,用戶端內容僅限於 IDE 狀態中的 一小部分值