Visual Studio için Proje şablonları oluşturma (VSIX / C # / 2019)

Başka bir teknoloji kitabına başladıktan veya yeni bir çerçeve veya platform keşfettikten sonra, çok zaman harcayan ve can sıkıcı olan şey, şablon ve gereksiz kurulumlardır. Bir projeye hızlı ve güzel bir başlangıç ​​yapmak, kendi kodunuzu öğrenmek ve çalışmak için önemli kısma odaklanmanıza yardımcı olur.

Çalıştığım şeylerden bazıları C ++ b a olduğu için Visual Studio, birçok genişletilebilirlik seçeneği sunan harika bir platform. VS’de bir proje şablonu oluşturmak için yapabileceğiniz temel şey, projenizin tüm kurulumunun “Şablonu Dışa Aktar” özelliğini kullanmasını sağladıktan sonra.

Bu, proje şablonunu yüklemenize eklemek için tüm VS gereksinimlerini içeren yeni bir zip dosyası oluşturur. Oluşturulan en önemli dosya MyTemplate.vstemplate ‘dir, hangi dosyaların dahil edildiği ve hangi dize değişiminin yapılması gerektiği ve VS’nin nasıl oluşturulacağı ile ilgili tüm bilgileri içerir. bu şablon. Bu işlem, daha karmaşık şablon oluştururken size zaman kazandırmak için kolayca kullanılabilir.

Daha karmaşık bir proje veya hatta temel proje türlerinden türetilmeyen veya şablondaki verilerin daha karmaşık bir şekilde oluşturulmasını gerektiren bir proje oluşturmak için bir VSIX uzatma projesi yapmamız gerekiyor.

Başlamadan önce, Visual Studio SDK’yı yüklememiz gerekiyor, bu, özellik yükleyicisinin bir parçası olduğu için eski sürümlere kıyasla daha kolaydır. Araçlar Araçlar ve Özellikler’den bir VSIX projesi oluşturabilmemiz için.

Başlangıç ​​olarak, her şeyi düzgün bir şekilde paketlemek için bir VSIX projesine ihtiyacımız olacak, dağıtımı kolay ve hatta pazara eklenebilecek tek bir dosya oluşturur.

C # Proje Şablonu Oluşturun

Bu, tüm şablon dosyalarımızı içeren yer tutucu projemiz olacak. İşleri daha yönetilebilir ve yapılandırılmış hale getirmek için bu projeyi tüm şablon dosyalarımızı ve destekleyici kodumuzu içerecek şekilde kullanacağız. Projemizi aldıktan sonra, bunu VSIX projemize bir ProjectTemplate varlığı (bu source.extension.vsixmanifest ile yapılır) olarak ekliyoruz.

Şablonlarınız ek bir şey gerektirmeyecek kadar basitse, tek bir VSIX projesi kullanabilir, kendisini bir ProjectTemplate varlığı olarak ekleyebilir ve dışa aktarılan tüm zip dosyalarını şablonlarla birlikte ProjectTemplates projenin kökünde.

.vstemplate dosyalarını kurma

Bir Visual Studio proje şablonunun özü, şablonun meta verilerini, davranışını ve içeriğini açıklayan xml dosyasıdır.

.vstemplate dosyasının temel yapısı şuna benzer:

Yalnızca bu iki öğe & lt; TemplateData & gt; , & lt; TemplateContent & gt; ve öğenin Type = “Project” özniteliğini içeren basit yapı VSTemplate kök öğesi. Şablon Verileri, ne tür bir proje olduğunu ve Visual Studio’nun bunu nasıl ele alması gerektiğini açıklar.

Oluşturabileceğimiz diğer bir şablon türü, esasen birinci gruba bağlı birden çok .vstemplate dosyasından oluşan bir Çözüm oluşturan bir grup şablonudur. Ekleyebileceğimiz başka bir yararlı şey de, proje oluşturmada size daha fazla etkileşim sağlayan bir Sihirbaz ‘dır ( bu sonraki bölümde anlatılacaktır ). Bir sihirbaz, oluşturmadan önce bir iletişim kutusu ile etkileşim kurma, VS’den konfigürasyonlara erişme veya parametreleri özel olarak değiştirme olanağı sağlayabilir.

Bu örnek bir grup proje şablonudur, sıradan bir proje şablonunu görebileceğiniz gibi, içerdiği Type = ”ProjectGroup” ve & lt; ProjectTemplateLink & gt; öğeleri ekledik bir & lt; ProjectCollection & gt; . Bu öğe, gruptaki projeleri tanımlayan gerçek şablonlara bağlanır. Çözümün nasıl saklanacağını özelleştirmek için & lt; SolutionFolder & gt; de kullanabilirsiniz.

Şablon Dosya Yapısı

Basitçe eklemek istediğiniz her proje şablonu, tüm dosyaları ve .vstemplate dosyasını içeren bir klasördür, tıpkı “Şablonu dışa aktar” işleminin dosyaları oluşturduğu gibi zip dosyasında. Bir grup şablonunun kullanılması, tüm proje şablonu klasörlerine kolayca başvurabilmesi için köke eklenmelidir.

Proje Şablonu Sihirbazları Oluşturma

Proje şablonuna bir sihirbaz eklemek, size şablon içeriklerinin nasıl oluşturulacağını kontrol etme yeteneği sağlar. Örneğin, birkaç seçenek içeren ve kullanıcının bazı dosyaları oluşturmayı atlamak veya farklı parametrelerle değiştirmek için neyi seçtiğine dayalı bir diyalogunuz olabilir.

Tüm bunlar, içinde bazı formlar olan bir uygulama yapmak ve bunu paketteki proje şablonuna göre yapılandırmak kadar basit.

Mevcut projemize şablonu içeren bir sınıf ekleyebilir veya özellikle sihirbaz için yeni bir proje oluşturabiliriz. Ne yaptığınıza bağlı olarak, daha sonra uygun derlemeye başvurmalısınız (daha sonra aşağıda açıklanmıştır).

Bundan sonra, bir IWizard arayüzünü uygulayan Wizard sınıfımızı oluşturmamız gerekiyor. Ayrıca, System.Windows Forms , EnvDTE ve Microsoft.VisualStudio.TemplateWizardInterface

projesine aşağıdaki referansları da eklemelisiniz

Bu basit uygulama, WinForms ile değiştirme parametresi olarak kullandığımız özel bir mesaj girdiğimiz bir iletişim penceresi oluşturur. Bu, iletişim kutusundan aldığımız girdiyi şablonumuz için replaceDictionary içine ekleyerek gerçekleşir.

Bir iletişim kutusu için WinForms yerine WPF kullanmak da mümkündür, bu nedenle bir örneği bağlayacağım ( WPF Örnek kodu )

Sihirbazın bir şablonla ilişkilendirilebilmesi için, VSIX paketinde imzalanması gereken bir derlemeye sahip olmamız gerekir çünkü bunun için tam nitelikli bir ada ihtiyacımız var.

Bir derlemeyi imzalamak için Hızlı Adımlar (VS’yi yönetici olarak çalıştırdığınızdan emin olun):

3. Aşağıdaki komutları çalıştırın (boşluk içeriyorsa yolu tırnak içine almayı unutmayın)

Her şey yolunda giderse, “Genel anahtar jetonu & lt; jeton & gt;” gibi bir çıktı almalısınız. Bu değeri not edin.

Şimdi, Sihirbazın adı <WizardExtension>

için .vstemplate ‘e başka bir etiket ekliyoruz

Burada, uygun Assembly sürümünü ve key.snk

‘den oluşturduğumuz PublicKeyToken ‘ ı ayarlamanız yeterlidir.

Sihirbazın ana iş yükü RunStarted yöntemidir

Proje oluşturma iletişim kutusunda Oluştur’a tıkladıktan sonra RunStarted yöntemi çalıştırılır, bu, bazı değişiklikler yapmak veya kullanıcıdan girdi talep etmek için mükemmel bir fırsattır.

Şablonlarda Parametreleri Ayarlama

Bu, temelde .vstemplate ‘de ReplaceParameters özniteliğinin true olarak ayarlandığı proje şablon dosyalarındaki bir dize değişimidir, bu nedenle dosyaları hariç tutma seçeneğimiz de vardır. yedek. Parametreleri belirlemenin iki yolu vardır:

& lt; CustomParameter & gt; Kullanımı:

Bir & lt; CustomParameters & gt; şablon içerik öğenizin içindeki etiketini kullanırsanız, bu tüm özel parametreler için bir kapsayıcı görevi görür. Her parametrenin bir adı ve bir değeri vardır. Bu, ad içeriğinin her örneğinin karşılık gelen değerle değiştirileceği anlamına gelir. . Şablon dosyalarındaki diğer metinlerden ayırt etmek için adın başında ve sonunda dolar işaretli gösterim kullanılır.

Ayrıca, kolaylık olması açısından, burada bulabileceğiniz bazı temel proje oluşturma ve adlandırma için ayrılmış olanlar vardır .

Özet

Sonuç

Sonuç olarak, kendi şablonlarınızı eğlenceli hale getirmeyi deneyin çünkü ona yaptığınız tüm çalışmalar uzun vadede karşılığını alacaktır. Belki bir dil özelliğini veya bazı çerçeveyi test etmenize ve denemenize yardımcı olacak standart proje şablonları oluşturmak istiyorsunuz :), ayrıca bunların nasıl yapılacağını da öğrenmek, Thread Building Blocks, OpenCL için temel projeler yapmak için kendi proje şablonlarımı oluşturdum. Nvidia SDK) ve burada bulabileceğiniz OpenMP.