İlk Visual Studio uzantınız
Bu makalede, ilk Visual Studio uzantınızı çalışır duruma getirmek için bazı basit adımlarda size yol gösterilir. Visual Studio uzantısı .NET Framework ve C# kullanılarak yazılır. Zaten bir .NET geliştiricisiyseniz, uzantı yazmanın diğer .NET programlarının ve kitaplıklarının çoğuna benzer olduğunu göreceksiniz.
Bugün yazacağın uzantı, yürütülürken metin düzenleyicisine yeni bir guid ekleyen bir komut ekler. Basit, kullanışlıdır ve uzantı geliştirmenin çeşitli yönlerine iyi bir giriş sağlar.
Görsel bir öğrenciyseniz, öğreticiyi izleyen birinin bu kısa videosunu gözden geçirin.
İlk Visual Studio uzantınızı yazmaya başlamadan önce (çok kolay, söz veriyorum!), gerekli araçlara sahip olduğunuzdan emin olun.
Proje oluşturma
Aralarından seçim yapabileceğiniz birkaç proje şablonu olduğundan doğru seçimi yapmak istiyorsunuz. Bu topluluk araç setinde kullanılan şablonların adında takma ad (Topluluk) vardır.
VSIX Projesi w/Command (Topluluk) şablonu bağlı bir komutla birlikte gelir ve buradan başlamayı kolaylaştırır. Bu, çoğu uzantı için harika bir başlangıç noktasıdır. Araç penceresi istediğinizi biliyorsanız VSIX Proje w/Tool Window (Topluluk) şablonunu kullanın. Ayrıca araç penceresini açmak için bir komutu vardır.
Yalnızca MEF uzantıları veya diğer gelişmiş senaryolar için Boş VSIX Projesi (Topluluk) veya VSIX Projesi (Topluluk) şablonlarını kullanın.
Bu kez, aşağıdaki ekran görüntüsünde gösterildiği gibi VSIX Projesi w/Command (Topluluk) şablonunu seçeceksiniz.
Proje şablonunu seçtikten sonra projenize bir ad vermeniz gerekir. InsertGuid olarak adlandır.
Oluştur düğmesine bastıktan sonra aşağıdaki gibi görünen temel bir VSIX Projesine sahip olmanız gerekir:
Önemli dosyalar
En önemli dosyaların üzerinden geçelim.
InsertGuidPackage.cs , Package sınıfı olarak adlandırılır. Yöntemi InitializeAsync(...)
, uzantınızı başlatmak için Visual Studio tarafından çağrılır. Buradan olay dinleyicileri ekleyip komutları, araç pencerelerini, ayarları ve diğer öğeleri kaydedersiniz.
source.extension.vsixmanifest , uzantınızın bildirim dosyasıdır. Başlık ve açıklama gibi meta verileri içerir, ancak uzantının ne içerdiği hakkında da bilgi içerir.
VSCommandTable.vsct , komutların ve anahtar bağlamalarının bildirim temelli olarak tanımlandığı bir XML dosyasıdır, bu nedenle Visual Studio'ya kaydedilebilirler.
Commands/MyCommand.cs, VSCommandTable.vsct dosyasında tanımlanan komutun komut işleyicisidir. Düğmeye tıklayarak komut yürütürken ne olacağını denetler.
Komutu değiştirme
İlk olarak, komutunuzun Visual Studio menü sistemi içinde doğru ada, simgeye ve konuma sahip olduğundan emin olmak istiyorsunuz.
VSCommandTable.vsct dosyasını açın ve bir <Group>
ve <Button>
bulun. Düğmenin grubu üst öğe olarak, grubun üst öğesinin ise yerleşik VSMainMenu/Araçlar menüsü olduğuna dikkat edin.
Uzantınız için, GUID Ekle komut düğmesinin Düzenle ana menüsünün altında olmasını istiyorsunuz, bu nedenle grubu Düzenle menüsüne yeniden üst öğe olarak ekleyeceksiniz. Aşağıdaki kod parçacığında olduğu gibi Araçları Düzenle ile değiştirin:
<Group guid="InsertGuid" id="MyMenuGroup" priority="0x0600">
<Parent guid="VSMainMenu" id="Edit"/>
</Group>
Doğru noktayı bulmayı kolaylaştırmak için yerleştirmeler için tam IntelliSense elde edersiniz.
Güncelleştirme <Button>
ihtiyaçları da vardır. Öğesinin özniteliğini <Icon>
PasteAppend olarak güncelleştirerek id
yeni bir simge oluşturacaksınız. Metni iyi, açıklayıcı bir adla güncelleştirin <ButtonText>
ve komutunun teknik adıyla güncelleştirin<LocCanonicalName>
. Bu, Araçlar > Seçenekleri > Ortam > Klavyesi iletişim kutusunda kullanıcılara komutunuza özel klavye kısayolları atadığında gösterilen addır.
<Button guid="InsertGuid" id="MyCommand" priority="0x0100" type="Button">
<Parent guid="InsertGuid" id="MyMenuGroup" />
<Icon guid="ImageCatalogGuid" id="PasteAppend" />
<CommandFlag>IconIsMoniker</CommandFlag>
<Strings>
<ButtonText>Insert GUID</ButtonText>
<LocCanonicalName>.Edit.InsertGuid</LocCanonicalName>
</Strings>
</Button>
Not
her zaman nokta karakteriyle başlayın <LocCanonicalName>
. Başka hiçbir metnin otomatik olarak önceden kaleme alınmamasını ve noktanın gösterilmemesini sağlar.
Visual Studio'nun görüntü kitaplığında bulunan binlerce simgeyi kullanabilir ve hatta IntelliSense'te gösterilen önizlemeyi alabilirsiniz:
Şimdi komutumuzun adını, simgesini ve konumunu güncelleştirdiniz ve guid'yi metin düzenleyicisine eklemek için kod yazmanın zamanı geldi.
/Commands/MyCommand.cs dosyasını açın ve yürütürken yeni bir guid eklemek için değiştirin:
using System;
using Community.VisualStudio.Toolkit;
using EnvDTE;
using Microsoft.VisualStudio.Shell;
using Task = System.Threading.Tasks.Task;
namespace InsertGuid
{
[Command(PackageIds.MyCommand)]
internal sealed class MyCommand : BaseCommand<MyCommand>
{
protected override async Task ExecuteAsync(OleMenuCmdEventArgs e)
{
await Package.JoinableTaskFactory.SwitchToMainThreadAsync();
DocumentView docView = await VS.Documents.GetActiveDocumentViewAsync();
if (docView?.TextView == null) return;
SnapshotPoint position = docView.TextView.Caret.Position.BufferPosition;
docView.TextBuffer?.Insert(position, Guid.NewGuid().ToString());
}
}
}
Etkin düzenleyici metin görünümünü almak ve ardından guid değerini metin arabelleğinin şapka işareti konumuna eklemek için nesnesini kullanıyorsunuz VS
.
Not
Bu topluluk araç setinde ve ThreadHelper.ThrowIfNotOnUIThread()
birçok yerde göreceksinizawait JoinableTaskFactory.SwitchToMainThreadAsync()
. İş parçacığı değiştirme en iyi yöntemlerini işler ve bu noktada bunları ne zaman ve nasıl kullanacağınızı bilmeniz gerekmez. Kod Düzeltmeleri (ampuller) ile derleyici uyarıları bunu çok kolaylaştırır.
Uzantımızın ilk taslağı artık tamamlandı ve test etme zamanı geldi.
Çalıştırma ve hata ayıklama
Uzantınızı çalıştırmak, diğer .NET projelerini çalıştırmak kadar kolaydır. Hata ayıklayıcı ekli olarak çalıştırmak için F5 tuşuna veya olmadan çalıştırmak için Ctrl+F5 tuşlarına basmanız yeterlidir.
Bunu yaptığınızda uzantınız yüklü olarak Visual Studio'nun Deneysel Örneği başlatılır. Deneysel Örnek, Visual Studio'nun normal sürümünüzdür, ancak ayrı ayarlar ve uzantılar yüklüdür. Her şeyin ayrı kalmasına yardımcı olur.
Deneysel Örnek başlatıldığında, Düzenle ana menüsünde GUID Ekle komutunu görmeniz gerekir.
Herhangi bir metin tabanlı dosyayı açın ve komutunu yürüterek yeni bir guid ekleyin. İşte hepsi bu!
Özet
Şimdi ana menüye bir komut düğmesi ekleyen ve yürütürken metin düzenleyicisiyle etkileşim kuran ilk uzantınızı oluşturdunuz.
Tebrikler!!
Bu uzantının kodunu örnek deposunda bulabilirsiniz.