Özel MVC Şablonu

tarafından Jacques Eloff

Visual Studio 2010 için MVC 3 Araç Güncelleştirmesi'nin sürümünde MVC projeleri için ayrı bir proje sihirbazı kullanıma sunuldu. Değişiklik iki faktör tarafından yönlendirildi. İlk olarak, MVC 3'te yeni şablonların kullanıma sunulması ve Razor gibi ek görünüm altyapıları desteği, Visual Studio'da Yeni Proje iletişim kutusunun aşırı kalabalık olmasını sağlar. İkincisi, müşteriler genişletilebilirlik noktaları istiyordu ve yeni MVC proje sihirbazı bize bu istekleri yanıtlama fırsatı verecekti.

Özel şablonlar eklemek, yeni şablonları MVC proje sihirbazında görünür hale getirmek için kayıt defterini kullanmaya dayalı zorlu bir işlemdi. Yeni bir şablonun yazarının, yükleme zamanında gerekli kayıt defteri girişlerinin oluşturulmasını sağlamak için şablonu bir MSI içine sarmalaması gerekiyordu. Alternatif olarak, şablonu içeren bir ZIP dosyasını kullanılabilir duruma getirmek ve son kullanıcının gerekli kayıt defteri girdilerini el ile oluşturmasını sağlamaktı.

Yukarıda belirtilen yaklaşımlardan hiçbiri ideal olmadığından, Visual Studio 2012 için MVC 4 ile başlayan özel MVC şablonlarının yazılmasını, dağıtılmasını ve yüklenmesini kolaylaştırmak için VSIX uzantıları tarafından sağlanan mevcut altyapılardan bazılarını kullanmaya karar verdik. Bu yaklaşımın sağladığı avantajlardan bazıları şunlardır:

  • VSIX uzantısı, farklı dilleri (C# ve Visual Basic) ve birden çok görünüm altyapılarını (ASPX ve Razor) destekleyen birden çok şablon içerebilir.
  • VSIX uzantısı, Express SKU'ları da dahil olmak üzere birden çok Visual Studio SKU'yu hedefleyebilir.
  • Visual Studio Galerisi, uzantının geniş bir kitleye dağıtılmasını kolaylaştırır.
  • VSIX uzantıları yükseltilebilir, böylece özel şablonlarınızda düzeltmeler ve güncelleştirmeler yazmanız kolaylaşır.

Önkoşullar

  • Kullanıcıların vstemplate dosyaları için gerekli işaretleme gibi proje şablonları yazma konusunda bilgi sahibi olması gerekir.
  • Kullanıcıların Visual Studio Professional ve üzeri yüklü olması gerekir. Express SKU'ları VSIX projeleri oluşturmayı desteklemez.
  • Visual Studio 2012 SDK'sı yüklü.

Örnek

İlk adım, C# veya Visual Basic kullanarak yeni bir VSIX projesi oluşturmaktır. Dosya > Yeni Proje'yi seçin, ardından sol bölmede Genişletilebilirlik'e tıklayın ve VSIX Projesi'ni seçin.

Yeni Proje

Proje oluşturulduktan sonra VSIX tasarımcısı açılır.

Project Tasarım Aracı Meta Verileri

Tasarımcı, uzantıyı yüklediklerinde kullanıcılara gösterilecek uzantının bazı genel özelliklerini düzenlemek veya Visual Studio'da yüklü uzantılara göz atmak için kullanılabilir (Araçlar > Uzantıları ve Güncelleştirmeler). Genel bilgileri tamamladıktan sonra Hedefleri Yükle sekmesine tıklayın.

Project Tasarım Aracı'ın Hedefleri Yükle sekmesini gösteren ekran görüntüsü.

Bu sekme, uzantınız tarafından desteklenen SKU'ları ve Visual Studio sürümlerini belirtmek için kullanılır. Tüm kullanıcıların VSIX'in makine başına yüklemelerini etkinleştirmesi için Bu VSIX yüklendi onay kutusunu seçin. Sağ taraftaki Yeni düğmesine tıklayarak Web Developer Express (VWD) gibi ek SKU'lar ekleyin.

Yeni Yükleme Hedefi Ekle

Tüm Professional ve daha yüksek SKU'ları (Professional, Premium ve Ultimate) desteklemeyi planlıyorsanız yalnızca ailedeki en düşük SKU'yu seçmeniz Microsoft.VisualStudio.Pro. Yükleme Hedefleri'ni tamamladıktan sonra tüm değişikliklerinizi kaydetmeyi unutmayın.

Belirtilen Tanımlayıcılar ve Sürüm Aralıkları ile Project Tasarım Aracı Yükleme Hedefleri sekmesini gösteren ekran görüntüsü.

Varlıklar sekmesi, tüm içerik dosyalarınızı VSIX'e eklemek için kullanılır. MVC özel meta veriler gerektirdiğinden, içerik eklemek için Varlıklar sekmesini kullanmak yerine VSIX bildirim dosyasının ham XML'sini düzenlersiniz. VsIX projesine şablon içeriğini ekleyerek başlayın. Klasörün yapısının ve içeriğinin projenin düzenini yansıtması önemlidir. Aşağıdaki örnek, Temel MVC proje şablonundan türetilmiş dört proje şablonu içerir. Proje şablonunuzu oluşturan tüm dosyaların (ProjectTemplates klasörünün altındaki her şey) VSIX proje dosyasında İçerik öğe grubuna eklendiğinden ve her öğenin aşağıdaki örnekte gösterildiği gibi CopyToOutputDirectory ve IncludeInVsix meta verilerini içerdiğinden emin olun.

<İçerik Include="ProjectTemplates\MyMvcWebApplicationProjectTemplate.csaspx\BasicWeb.config">

<CopyToOutputDirectory>Always</CopyToOutputDirectory>

<IncludeInVSIX>true</IncludeInVSIX>

</Içerik>

Aksi takdirde, VSIX'i oluştururken IDE şablonun içeriğini derlemeye çalışır ve büyük olasılıkla bir hata görürsünüz. Şablonlardaki kod dosyaları genellikle proje şablonu örneği oluşturulurken Visual Studio tarafından kullanılan özel şablon parametreleri içerir ve bu nedenle IDE'de derlenemez.

Çözüm Gezgini

VSIX tasarımcısını kapatın, ardından Çözüm Gezgini'dasource.extension.manifest dosyasına sağ tıklayın ve Birlikte Aç'ı seçin ve XML (Metin) Düzenleyicisi seçeneğini belirleyin.

İletişim Kutusu ile Aç

Bir <Assets> öğesi oluşturun ve VSIX'e eklenmesi gereken her dosya için bir <Asset> öğesi ekleyin. Her <Asset> öğesinin Type özniteliği Microsoft.VisualStudio.Mvc.Template olarak ayarlanmalıdır. Bu, yalnızca MVC proje sihirbazının anladığı özel bir ad alanıdır. Bildirim dosyasının yapısı ve düzeni hakkında ek bilgi için VSIX 2.0 Şeması belgelerine bakın.

Dosyaları VSIX'e eklemek, şablonları MVC sihirbazına kaydetmek için yeterli değildir. MVC sihirbazına şablon adı, açıklama, desteklenen görünüm altyapıları ve programlama dili gibi bilgileri sağlamanız gerekir. Bu bilgiler, her vstemplate dosyası için Asset> öğesiyle< ilişkili özel özniteliklerde taşınır.

<Asset d:VsixSubPath="ProjectTemplates\MyMvcWebApplicationProjectTemplate.csaspx"

Type="Microsoft.VisualStudio.Mvc.Template"

d:Source="File"

Path="ProjectTemplates\MyMvcWebApplicationProjectTemplate.csaspx\BasicMvcWebApplicationProjectTemplate.11.csaspx.vstemplate"

ProjectType="MVC"

Language="C#"

ViewEngine="Aspx"

TemplateId="MyMvcApplication"

Title="Özel Temel Web Uygulaması"

Description="Temel MVC web uygulamasından (Razor) türetilen özel şablon"

Version="4.0"/>

Aşağıda, mevcut olması gereken özel özniteliklerin açıklaması yer almaktadır:

  • ProjectType MVC olarak ayarlanmalıdır.
  • Dil , şablon tarafından desteklenen geliştirme dilini tanımlar. Geçerli değerler C# veya VB'dir.
  • ViewEngine , şablon tarafından desteklenen Aspx veya Razor gibi görünüm altyapısını tanımlar. Bu alan için özel bir değer belirtebilirsiniz.
  • TemplateId , şablonları gruplandırmada kullanılır. Değer mevcut bir şablon kimliğiyle eşleşiyorsa, MVC sihirbazına önceden kaydedilmiş şablonları geçersiz kılar.
  • Başlık , her proje şablonunun altındaki MVC sihirbazında görüntülenen kısa açıklamayı belirler.
  • Açıklama , şablonun daha ayrıntılı bir açıklamasını belirler.

Bildirime tüm dosyaları ekledikten ve kaydettikten sonra, tasarımcıdaki Varlıklar sekmesinin vstemplate dosyaları için Asset> öğelerine< eklediğiniz özel öznitelikleri değil tüm dosyaları görüntülediğini fark edeceksiniz.

Proje Tasarım Aracı Varlıkları

Geriye kalan tek şey VSIX projesini derlemek ve yüklemektir.

VSIX uzantısını test etmek istediğiniz makinede tüm Visual Studio örneklerinin kapalı olduğundan emin olun. Visual Studio, başlatma sırasında yeni uzantıları tarar, dolayısıyla VSIX yüklerken IDE açıksa Visual Studio'yu yeniden başlatmanız gerekir. Gezgin'de VSIX dosyasına çift tıklayarak VSIX Yükleyicisi'ni başlatın, Yükle'ye tıklayın ve ardından Visual Studio'yu başlatın.

VSIX Yükleyicisi

Menüden Araçlar > Uzantıları'nı seçin ve uzantınızın yüklendiğini onaylamak için Güncelleştirmeler. VSIX Yükleyicisi uzantının yüklenmesi sırasında herhangi bir hata bildirdiyse, daha fazla bilgi için VSIX Yükleyicisi günlüğünü görüntüleyebilirsiniz. Günlük genellikle uzantıyı yükleyen kullanıcının %temp% klasöründe oluşturulur, örneğin C:\Users\Bob\AppData\Local\Temp.

Uzantılar ve Güncelleştirmeler

Pencereyi kapattıktan sonra, yeni şablonlarınızın MVC sihirbazında gösterilip gösterilmediğini görmek için bir MVC 4 projesi oluşturabilirsiniz.

Yeni ASP.NET MVC 4 Projesi

Sınırlamalar

  1. MVC sihirbazı yerelleştirilmiş özel şablonları desteklemez.
  2. Sihirbaz özel şablonları bulamazsa herhangi bir hata bildirmez. Gerekli özel özniteliklerden herhangi biri yoksa, şablon sihirbazdan dışlanır.