İlk Visual Studio uzantınızı oluşturma
Bu belge, VisualStudio.Extensibility kullanarak ilk uzantınızı oluşturmayı gösteren hızlı bir başlangıçtır. Uzantı işlem dışı çalışır, yani Visual Studio işleminin dışındadır.
Önkoşullar
- İş yüküyle
Visual Studio extension development
Visual Studio 2022 sürüm 17.9 Preview 1 veya üzeri.
Uzantı projesini oluşturma
- Şablonu
VisualStudio.Extensibility Project
kullanarak yeni bir genişletilebilirlik projesi oluşturun.
Bu noktada, uzantınıza komutlar ve düzenleyici bileşenleri ekleyerek Visual Studio'yu genişletmeye başlayabilirsiniz.
Uzantı sınıfı
Şablon genişleten Extension
bir sınıf oluşturur. Bu sınıf, uzantınız yüklendiğinde örneği oluşturulmuş ilk sınıftır. yönteminde InitializeServices
, bağımlılık ekleme için kullanılabilir hale getirmek için hizmet koleksiyonuna kendi hizmetlerinizi ekleyebilirsiniz.
[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 tarafından kullanılması amaçlanan uzantı bileşenlerini işaretlemek için kullanılan özniteliği de görebilirsiniz VisualStudioContribution
. Bu öznitelik uygulayan sınıflara veya uygulayan IVisualStudioContributionClass
bir türün IVisualStudioContributionProperty
statik özelliklerine uygulanabilir.
İlk komutunuzu ekleme
Şablon, başlangıç noktası olarak kullanabileceğiniz ilk komut işleyiciniz olarak oluşturur Command1.cs
. Visual Studio'yu bu komutun farkında hale getirmek istediğimizden ve Command
sınıfı uyguladığından IVisualStudioContributionClass
, komutu özniteliğiyle VisualStudioContribution
işaretlenir.
[VisualStudioContribution]
internal class Command1 : Command
{
Komutun, menü altında Extensions
görünen adını, simgesini ve yerleşimini tanımlayan adlı CommandConfiguration
bir yapılandırma özelliği vardır.
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 },
};
Yapılandırma özellikleri, uzantı oluşturulurken C# derleyicisi tarafından değerlendirilir ve Visual Studio'un uzantı derlemesini yüklemeden okuyabilmesi için değerleri uzantı meta verileri olarak kaydedilir. Bu nedenle, yapılandırma özellikleri normal özelliklere kıyasla ek kısıtlamalara sahiptir (örneğin, salt okunur olmalıdır).
Komutun "%MyExtension.Command1.DisplayName%"
görünen adının, dosyadaki .vsextension/string-resources.json
dizeye başvuran ve bu dizenin MyExtension.Command1.DisplayName
yerelleştirilmesine izin veren olduğunu görebilirsiniz.
Komut yürütürken Visual Studio, kesme noktası yerleştirebileceğiniz yöntemi çağırır ExecuteCommandAsync
. Visual Studio ile etkileşim kurmak için bağımsız değişken veya this.Extensibility
nesne kullanabilirsinizcontext
.
Örneğin, bir komut işleyicisi aşağıdaki gibi olabilir:
public override async Task ExecuteCommandAsync(IClientContext context, CancellationToken cancellationToken)
{
await context.ShowPromptAsync(
"Hello from an extension!",
PromptOptions.OK,
cancellationToken);
}
Komut ekleme hakkında daha fazla bilgi için lütfen Komutlar bölümüne bakın.
Uzantınızda hata ayıklama
Visual Studio'da başlangıç projesi olarak uzantı projenizin seçildiğinden emin olun ve hata ayıklamayı başlatmak için basın
F5
.Basıldığında
F5
uzantınız derlenip kullandığınız Visual Studio sürümünün deneysel örneğine dağıtılır. Uzantınız yüklendikten sonra hata ayıklayıcısı eklenmelidir.Yeni komutu aşağıdaki görüntüde
Extensions
gösterildiği gibi menüde bulabilirsiniz:
Sonraki adımlar
Giriş niteliğindeki genel bakışları kaçırdıysanız VisualStudio.Genişletilebilirlik belgelerine hoş geldiniz bölümüne bakın.
Şimdi biraz daha ilginç bir uzantı oluşturun; Bkz. Basit uzantı oluşturma.