建立您的第一個 Visual Studio 擴充功能
本文件是說明如何使用 VisualStudio.Extensibility 建立第一個擴充功能的快速入門。 擴充功能執行跨處理序,意味著在 Visual Studio 處理序之外。
必要條件
- 具有
Visual Studio extension development
工作負載的 Visual Studio 2022 17.9 版 Preview 1 或更高版本。
建立延伸模組專案
- 使用
VisualStudio.Extensibility Project
範本來建立新的擴充性專案。
此時,您已準備好透過向擴充功能新增命令和編輯器元件來開始擴充 Visual Studio。
[擴充功能] 類別
此範本會建立擴充 Extension
的類別。 此類別是載入擴充功能時所具現化的第一個類別。 在 InitializeServices
方法中,您可以將自己的服務新增至服務集合,使其可供相依性插入使用。
[VisualStudioContribution]
internal class ExtensionEntrypoint : Extension
{
protected override void InitializeServices(IServiceCollection serviceCollection)
{
base.InitializeServices(serviceCollection);
// You can configure dependency injection here by adding services to the serviceCollection.
}
}
您也可以查看用來標記 Visual Studio 所要取用的擴充功能元件的 VisualStudioContribution
屬性。 這個屬性可以套用至實作 IVisualStudioContributionClass
的類別,或類型實作 IVisualStudioContributionProperty
的靜態屬性。
新增您的第一個命令
此範本建立 Command1.cs
作為您的第一個命令處理常式,您可以將其用作起點。 由於我們想要讓 Visual Studio 知道此命令,而 Command
類別會實作 IVisualStudioContributionClass
,因此命令會以 VisualStudioContribution
屬性標示。
[VisualStudioContribution]
internal class Command1 : Command
{
此命令具有名為 CommandConfiguration
的組態屬性,該屬性會定義其顯示名稱、圖示和 Extensions
功能表下的位置。
public override CommandConfiguration CommandConfiguration => new("%MyExtension.Command1.DisplayName%")
{
// Use this object initializer to set optional parameters for the command. The required parameter,
// displayName, is set above. DisplayName is localized and references an entry in .vsextension\string-resources.json.
Icon = new(ImageMoniker.KnownValues.Extension, IconSettings.IconAndText),
Placements = new[] { CommandPlacement.KnownPlacements.ExtensionsMenu },
};
建置擴充功能時,C# 編譯器會評估組態屬性,並將其值儲存為擴充功能中繼資料,讓 Visual Studio 可以進行讀取而不需載入擴充功能組件。 因此,相較於一般屬性,組態屬性具有額外的限制 (例如,必須是唯讀的)。
您可以看到命令的顯示名稱是 "%MyExtension.Command1.DisplayName%"
,它會參考 .vsextension/string-resources.json
檔案中的 MyExtension.Command1.DisplayName
字串,允許當地語系化此字串。
執行命令時,Visual Studio 會呼叫 ExecuteCommandAsync
方法 ,您可以在其中放置中斷點。 您可以使用 context
引數或 this.Extensibility
物件與 Visual Studio 互動。
例如,命令處理常式可能如下所示:
public override async Task ExecuteCommandAsync(IClientContext context, CancellationToken cancellationToken)
{
await context.ShowPromptAsync(
"Hello from an extension!",
PromptOptions.OK,
cancellationToken);
}
如需如何新增命令的詳細資訊,請參閱命令一 節。
偵錯您的擴充功能
請確定您的擴充功能專案已選取為 Visual Studio 中的啟動專案,然後按
F5
以開始偵錯。按
F5
組建您的擴充功能,並將其部署至您所使用的 Visual Studio 版本實驗執行個體。 載入擴充功能之後,偵錯工具應該附加。您可以在
Extensions
功能表中找到新的指令,如下圖所示:
下一步
如果您錯過了簡介概觀,請參閱歡迎使用 VisualStudio.Extensibility 文件。
現在建立稍微有趣的擴充功能;請參閱建立簡單的擴充功能。