Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu serideki ilk kılavuz olan Temel proje sistemi oluşturma, bölüm 1, temel proje sisteminin nasıl oluşturulacağını gösterir. Bu kılavuz visual studio şablonu, özellik sayfası ve diğer özellikler ekleyerek temel proje sistemini temel alır. İlk kapsamlı incelemeyi tamamlamadan önce bunu başlatamazsınız.
Bu kılavuzda proje dosya adı uzantısı .myproj olan bir proje türünün nasıl oluşturulacağı gösterilmektedir. İzlenecek yolu tamamlamak için kendi dilinizi oluşturmanız gerekmez çünkü izlenecek yol mevcut Visual C# proje sisteminden ödünç alır.
Bu kılavuzda şu görevlerin nasıl yerine getir edileceği öğretlenmiştir:
Visual Studio şablonu oluşturun.
Visual Studio şablonu dağıtma.
Yeni Proje iletişim kutusunda proje türü alt düğümü oluşturun.
Visual Studio şablonunda parametre değişimini etkinleştirin.
Proje özellik sayfası oluşturun.
Uyarı
Bu kılavuzdaki adımlar bir C# projesini temel alır. Ancak, dosya adı uzantıları ve kod gibi ayrıntılar dışında, visual basic projesi için de aynı adımları kullanabilirsiniz.
Visual Studio şablonu oluşturma
- Temel bir proje sistemi oluşturma, 1. bölümde temel proje şablonunun nasıl oluşturulacağı ve proje sistemine nasıl ekleneceği gösterilir. Ayrıca, sistem kayıt defterindeki ProvideProjectFactoryAttribute\Templates\Projects\SimpleProject\ klasörünün tam yolunu yazan özniteliğini kullanarak bu şablonun Visual Studio'ya nasıl kaydedildiği de gösterilir.
Temel proje şablonu yerine Visual Studio şablonu (.vstemplate dosyası) kullanarak, şablonun Yeni Proje iletişim kutusunda nasıl görüneceğini ve şablon parametrelerinin nasıl değiştirıldığını denetleyebilirsiniz. .vstemplate dosyası, proje sistem şablonu kullanılarak proje oluşturulduğunda kaynak dosyaların nasıl eklendiğini açıklayan bir XML dosyasıdır. Proje sisteminin kendisi .vstemplate dosyasını ve kaynak dosyaları bir.zip dosyasında toplayarak oluşturulur ve .zip dosyası Visual Studio tarafından bilinen bir konuma kopyalanarak dağıtılır. Bu işlem, bu kılavuzun ilerleyen bölümlerinde daha ayrıntılı olarak açıklanmıştır.
Visual Studio'da, Temel proje sistemi oluşturma,bölüm 1'i izleyerek oluşturduğunuz SimpleProject çözümünü açın.
SimpleProjectPackage.cs dosyasında ProvideProjectFactory özniteliğini bulun. İkinci parametreyi (proje adı) null ve dördüncü parametreyi (proje şablonu klasörünün yolu) aşağıdaki gibi ".\\NullPath" ile değiştirin.
[ProvideProjectFactory(typeof(SimpleProjectFactory), null, "Simple Project Files (*.myproj);*.myproj", "myproj", "myproj", ".\\NullPath", LanguageVsTemplate = "SimpleProject")]\Templates\Projects\SimpleProject\klasörüne SimpleProject.vstemplate adlı bir XML dosyası ekleyin.
SimpleProject.vstemplate içeriğini aşağıdaki kodla değiştirin.
<VSTemplate Version="2.0.0" Type="Project" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005"> <TemplateData> <Name>SimpleProject Application</Name> <Description> A project for creating a SimpleProject application </Description> <Icon>SimpleProject.ico</Icon> <ProjectType>SimpleProject</ProjectType> </TemplateData> <TemplateContent> <Project File="SimpleProject.myproj" ReplaceParameters="true"> <ProjectItem ReplaceParameters="true" OpenInEditor="true"> Program.cs </ProjectItem> <ProjectItem ReplaceParameters="true" OpenInEditor="false"> AssemblyInfo.cs </ProjectItem> </Project> </TemplateContent> </VSTemplate>Özellikler penceresinde, \Templates\Projects\SimpleProject\ klasöründeki beş dosyanın tümünü seçin ve Derleme Eylemi'niZipProject olarak ayarlayın.
TemplateData bölümü, <> iletişim kutusundaki SimpleProject proje türünün konumunu ve görünümünü aşağıdaki gibi belirler:
<Name> öğesi proje şablonunu SimpleProject Uygulaması olarak adlandırdı.
<Açıklama> öğesi, proje şablonu seçildiğinde Yeni Proje iletişim kutusunda görüntülenen açıklamayı içerir.
Icon< öğesi SimpleProject >proje türüyle birlikte görüntülenen simgeyi belirtir.
ProjectType öğesi, <> iletişim kutusundaki Proje türünü adlandırın. Bu ad, ProvideProjectFactory özniteliğinin proje adı parametresinin yerini alır.
Uyarı
<ProjectType> öğesi, SimpleProjectPackage.cs dosyasındaki
ProvideProjectFactoryözniteliğininLanguageVsTemplatebağımsız değişkeniyle eşleşmelidir.<TemplateContent> bölümünde, yeni bir proje oluşturulduğunda oluşturulan bu dosyalar açıklanmaktadır:
SimpleProject.myproj
Program.cs
AssemblyInfo.cs
Üç dosya da
ReplaceParameterstrue olarak ayarlanmıştır ve bu da parametre değişimini etkinleştirir. Program.cs dosyası true olarak ayarlanmıştırOpenInEditorve bu da proje oluşturulduğunda dosyanın kod düzenleyicisinde açılmasına neden olur.Visual Studio Şablonu şemasındaki öğeler hakkında daha fazla bilgi için bkz. Visual Studio şablon şeması başvurusu.
Uyarı
Bir projede birden fazla Visual Studio şablonu varsa, her şablon ayrı bir klasördedir. Bu klasördeki her dosyada Derleme EylemiZipProject olarak ayarlanmalıdır.
Minimal bir .vsct dosyası ekleme
Yeni veya değiştirilmiş bir Visual Studio şablonunu tanımak için Visual Studio kurulum modunda çalıştırılmalıdır. Kurulum modu bir .vsct dosyasının mevcut olmasını gerektirir. Bu nedenle, projeye en az .vsct dosyası eklemeniz gerekir.
SimpleProject projesine SimpleProject.vsct adlı bir XML dosyası ekleyin.
SimpleProject.vsct dosyasının içeriğini aşağıdaki kodla değiştirin.
<?xml version="1.0" encoding="utf-8" ?> <CommandTable xmlns="http://schemas.microsoft.com/VisualStudio/2005-10-18/CommandTable"> </CommandTable>Bu dosyanın Derleme Eylemi'niVSCTCompile olarak ayarlayın. Bunu Özellikler penceresinde değil, yalnızca .csproj dosyasında yapabilirsiniz. Bu dosyanın Derleme Eylemi'nin bu noktada Yok olarak ayarlandığından emin olun.
SimpleProject düğümüne sağ tıklayın ve simpleProject.csproj dosyasını düzenle'yi seçin.
.csproj dosyasında SimpleProject.vsct öğesini bulun.
<None Include="SimpleProject.vsct" />Derleme eylemini VSCTCompile olarak değiştirin.
<VSCTCompile Include="SimpleProject.vsct" />Proje dosyasını kaydedin ve düzenleyiciyi kapatın.
SimpleProject düğümünü kaydedin ve Çözüm Gezgini'ndeProjeyi Yeniden Yükle'yi seçin.
Visual Studio şablonu derleme adımlarını inceleme
VSPackage proje derleme sistemi genellikle .vstemplate dosyası değiştirildiğinde veya .vstemplate dosyasını içeren proje yeniden oluşturulduğunda Visual Studio'yu kurulum modunda çalıştırır. MSBuild'in ayrıntı düzeyini Normal veya daha yüksek olarak ayarlayarak bunu takip edebilirsiniz.
Araçlar>Seçenekleri bölmesinde Tüm Ayarlar>Projeler ve Çözümler>Derleme ve Çalıştırma bölümünü genişletin.
MSBuild proje derleme çıktısı ayrıntı düzeyi seçeneğini Normal olarak ayarlayın.
Araçlar>Seçenekleri iletişim kutusunda Projeler ve Çözümler>Derleme ve Çalıştırma bölümünü genişletin.
MSBuild projesi derleme çıkış ayrıntısı seçeneğini Normal olarak ayarlayın ve Tamam'ı seçin.
- SimpleProject projesini yeniden oluşturun.
.zip proje dosyasını oluşturmaya ilişkin derleme adımı aşağıdaki örneğe benzemelidir.
ZipProjects:
1> Zipping ProjectTemplates
1> Zipping <path>\SimpleProject\SimpleProject\obj\Debug\SimpleProject.zip...
1> Copying file from "<path>\SimpleProject\SimpleProject\obj\Debug\SimpleProject.zip" to "<%LOCALAPPDATA%>\Microsoft\VisualStudio\14.0Exp\ProjectTemplates\\\\SimpleProject.zip".
1> Copying file from "<path>\SimpleProject\SimpleProject\obj\Debug\SimpleProject.zip" to "bin\Debug\\ProjectTemplates\\\\SimpleProject.zip".
1> SimpleProject -> <path>\SimpleProject\SimpleProject\bin\Debug\ProjectTemplates\SimpleProject.zip
1>ZipItems:
1> Zipping ItemTemplates
1> SimpleProject ->
Visual Studio şablonu dağıtma
Visual Studio şablonları yol bilgisi içermez. Bu nedenle, şablon .zip dosyası Visual Studio tarafından bilinen bir konuma dağıtılmalıdır. ProjectTemplates klasörünün konumu genellikle < \Microsoft\VisualStudio\14.0Exp\ProjectTemplates%LOCALAPPDATA%>.
Proje fabrikanızı dağıtmak için yükleme programının yönetici ayrıcalıklarına sahip olması gerekir. Visual Studio yükleme düğümü altında şablonları dağıtır: ...\Microsoft Visual Studio 14.0\Common7\IDE\ProjectTemplates.
Visual Studio şablonunu test edin
Visual Studio şablonunu kullanarak proje hiyerarşisi oluşturup oluşturmadığını görmek için proje fabrikanızı test edin.
Visual Studio SDK deneysel örneğini sıfırlayın.
Windows 7'de: Başlat menüsünde Microsoft Visual Studio/Microsoft Visual Studio SDK/Tools klasörünü bulun ve Ardından Microsoft Visual Studio Deneysel örneğini sıfırla'yı seçin.
Windows'un sonraki sürümlerinde: Başlangıç ekranında Microsoft Visual Studio <sürüm> Deneysel Örneğini Sıfırla yazın.
Bir komut istemi penceresi görüntülenir. Devam etmek için herhangi bir tuşa basın sözcüklerini gördüğünüzde ENTER'ı seçin. Pencere kapatıldıktan sonra Visual Studio'yu açın.
SimpleProject projesini yeniden oluşturun ve hata ayıklamayı başlatın. Deneysel örnek görüntülenir.
Deneysel örnekte bir SimpleProject projesi oluşturun. Yeni Proje iletişim kutusunda SimpleProject'i seçin.
SimpleProject'in yeni bir örneğini görmeniz gerekir.
Proje türü için alt düğüm oluşturun
Yeni Proje iletişim kutusunda proje türü düğümüne alt düğüm ekleyebilirsiniz. Örneğin SimpleProject proje türü için konsol uygulamaları, pencere uygulamaları, web uygulamaları vb. için alt düğümleriniz olabilir.
Çocuk düğümler, proje dosyası değiştirilerek ve ZipProject< öğelerine >OutputSubPath< alt öğeleri eklenerek >oluşturulur. Derleme veya dağıtım sırasında bir şablon kopyalandığında, her alt düğüm proje şablonları klasörünün alt klasörü olur.
Bu bölümde SimpleProject proje türü için konsol alt düğümünü oluşturma adımları gösterilmektedir.
\Templates\Projects\SimpleProject\ klasörünü \Templates\Projects\ConsoleApp\ olarak yeniden adlandırın.
Özellikler penceresinde, \Templates\Projects\ConsoleApp\ klasöründeki beş dosyanın tümünü seçin ve Derleme Eylemi'ninZipProject olarak ayarlandığından emin olun.
SimpleProject.vstemplate dosyasında TemplateData< bölümünün sonuna kapanış etiketinin >hemen önüne aşağıdaki satırı ekleyin.
<NumberOfParentCategoriesToRollUp>1</NumberOfParentCategoriesToRollUp>Bu, Konsol Uygulaması şablonunun hem Konsol alt düğümünde hem de alt düğümün bir düzeyi üzerindeki SimpleProject üst düğümünde görünmesine neden olur.
SimpleProject.vstemplate dosyasını kaydedin.
.csproj dosyasında, ZipProject öğelerinin her birine OutputSubPath< ekleyin>. Daha önce olduğu gibi projeyi kaldırın ve proje dosyasını düzenleyin.
<ZipProject> öğelerini bulun. Her <ZipProject> öğesine bir <OutputSubPath> öğesi ekleyin ve Console değerini verin. The ZipProject
<ZipProject Include="Templates\Projects\ConsoleApp\AssemblyInfo.cs"> <OutputSubPath>Console</OutputSubPath> </ZipProject> <ZipProject Include="Templates\Projects\ConsoleApp\Program.cs"> <OutputSubPath>Console</OutputSubPath> </ZipProject> <ZipProject Include="Templates\Projects\ConsoleApp\SimpleProject.myproj"> <OutputSubPath>Console</OutputSubPath> </ZipProject> <ZipProject Include="Templates\Projects\ConsoleApp\SimpleProject.vstemplate"> <OutputSubPath>Console</OutputSubPath> </ZipProject> <ZipProject Include="Templates\Projects\ConsoleApp\SimpleProject.ico"> <OutputSubPath>Console</OutputSubPath> </ZipProject>Bu <PropertyGroup'ı> proje dosyasına ekleyin:
<PropertyGroup> <VsTemplateLanguage>SimpleProject</VsTemplateLanguage> </PropertyGroup>Proje dosyasını kaydedin ve projeyi yeniden yükleyin.
Proje türü alt düğümünü test etme
Konsol alt düğümlerinin Yeni Proje iletişim kutusunda görünüp görünmediğini görmek için değiştirilen proje dosyasını test edin.
Microsoft Visual Studio Deneysel Örneğini Sıfırla aracını çalıştırın.
SimpleProject projesini yeniden oluşturun ve hata ayıklamayı başlatın. Deneysel örnek görünmelidir
Yeni Proje iletişim kutusunda SimpleProject düğümünü seçin. Konsol Uygulaması şablonu Şablonlar bölmesinde görünmelidir.
SimpleProject düğümünü genişletin. Konsol alt düğümü görünmelidir. SimpleProject Uygulaması şablonu Şablonlar bölmesinde görünmeye devam eder.
İptal'i seçin ve hata ayıklamayı durdurun.
Proje şablonu parametrelerini değiştirme
-
Temel bir proje sistemi oluşturma, 1. bölüm temel bir şablon parametresi değiştirme yapmak için
ProjectNode.AddFileFromTemplateyönteminin nasıl geçersiz kılınacağını göstermiştir. Bu bölümde daha gelişmiş Visual Studio şablon parametrelerinin nasıl kullanılacağı öğretilir.
Yeni Proje iletişim kutusunda Visual Studio şablonu kullanarak proje oluşturduğunuzda, şablon parametreleri projeyi özelleştirmek için dizelerle değiştirilir. Şablon parametresi, dolar işaretiyle (örneğin, $time$) başlayıp biten özel bir belirteçtir. Aşağıdaki iki parametre, şablonu temel alan projelerde özelleştirmeyi etkinleştirmek için özellikle yararlıdır:
$GUID[1-10]$ yerine yeni bir Guid eklendi. 10 adede kadar benzersiz GUID belirtebilirsiniz, örneğin, $guid 1$.
$safeprojectname$, bir kullanıcı tarafından Yeni Proje iletişim kutusunda sağlanan ve tüm güvenli olmayan karakterleri ve boşlukları kaldıracak şekilde değiştirilen addır.
Şablon parametrelerinin tam listesi için bkz. Şablon parametreleri.
Proje şablonu parametrelerini değiştirmek için
SimpleProjectNode.cs dosyasındaki
AddFileFromTemplatemetodunu kaldırın.\Templates\Projects\ConsoleApp\SimpleProject.myproj dosyasında RootNamespace< özelliğini bulun >ve değerini $safeprojectname$ olarak değiştirin.
<RootNamespace>$safeprojectname$</RootNamespace>\Templates\Projects\SimpleProject\Program.cs dosyasında, dosyanın içeriğini aşağıdaki kodla değiştirin:
using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; // Guid namespace $safeprojectname$ { [Guid("$guid1$")] public class $safeprojectname$ { static void Main(string[] args) { Console.WriteLine("Hello VSX!!!"); Console.ReadKey(); } } }SimpleProject projesini yeniden oluşturun ve hata ayıklamayı başlatın. Deneysel örnek görünmelidir.
Yeni bir SimpleProject Konsol uygulaması oluşturun. ( Proje türleri bölmesinde SimpleProject'i seçin. Visual Studio yüklü şablonlar'ın altında Konsol Uygulaması'nı seçin.)
Yeni oluşturulan projede Program.cs açın. Aşağıdakine benzer olmalıdır (dosyanızdaki GUID değerleri farklıdır.):
using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; // Guid namespace Console_Application1 { [Guid("00000000-0000-0000-00000000-00000000)"] public class Console_Application1 { static void Main(string[] args) { Console.WriteLine("Hello VSX!!!"); Console.ReadKey(); } } }
Proje özellik sayfası oluşturma
Kullanıcıların şablonunuzu temel alan projelerdeki özellikleri görüntüleyebilmesi ve değiştirebilmesi için proje türünüz için bir özellik sayfası oluşturabilirsiniz. Bu bölümde yapılandırmadan bağımsız özellik sayfasının nasıl oluşturulacağı gösterilmektedir. Bu temel özellik sayfası, özellik sayfası sınıfınızda açığa çıkardığınız genel özellikleri görüntülemek için bir özellik ızgarası kullanır.
Özellik sayfası sınıfınızı temel sınıftan SettingsPage türetin. sınıfı tarafından SettingsPage sağlanan özellikler kılavuzu, temel veri türlerinin çoğunu bilir ve bunların nasıl görüntüleneceğini bilir. Ayrıca, SettingsPage sınıf özellik değerlerinin proje dosyasında nasıl kalıcı hale getirmek için bilgi sahibidir.
Bu bölümde oluşturduğunuz özellik sayfası, şu proje özelliklerini değiştirmenizi ve kaydetmenizi sağlar:
DerlemeAdı
Çıktı Türü
RootNamespace.
SimpleProjectPackage.cs dosyasında bu
ProvideObjectözniteliği sınıfınaSimpleProjectPackageekleyin:[ProvideObject(typeof(GeneralPropertyPage))] public sealed class SimpleProjectPackage : ProjectPackageBu, özellik sayfası sınıfını
GeneralPropertyPageCOM'a kaydeder.SimpleProjectNode.cs dosyasında bu iki geçersiz kılınmış yöntemi sınıfına
SimpleProjectNodeekleyin:protected override Guid[] GetConfigurationIndependentPropertyPages() { Guid[] result = new Guid[1]; result[0] = typeof(GeneralPropertyPage).GUID; return result; } protected override Guid[] GetPriorityProjectDesignerPages() { Guid[] result = new Guid[1]; result[0] = typeof(GeneralPropertyPage).GUID; return result; }Bu yöntemlerin her ikisi de özellik sayfası GUID'leri dizisi döndürür. Dizideki tek öğe GeneralPropertyPage GUID'dir, bu nedenle Özellik Sayfaları iletişim kutusunda yalnızca bir sayfa gösterilir.
SimpleProject projesine GeneralPropertyPage.cs adlı bir sınıf dosyası ekleyin.
Aşağıdaki kodu kullanarak bu dosyanın içeriğini değiştirin:
using System; using System.Runtime.InteropServices; using Microsoft.VisualStudio; using Microsoft.VisualStudio.Project; using System.ComponentModel; namespace SimpleProject { [ComVisible(true)] [Guid("6BC7046B-B110-40d8-9F23-34263D8D2936")] public class GeneralPropertyPage : SettingsPage { private string assemblyName; private OutputType outputType; private string defaultNamespace; public GeneralPropertyPage() { this.Name = "General"; } [Category("AssemblyName")] [DisplayName("AssemblyName")] [Description("The output file holding assembly metadata.")] public string AssemblyName { get { return this.assemblyName; } } [Category("Application")] [DisplayName("OutputType")] [Description("The type of application to build.")] public OutputType OutputType { get { return this.outputType; } set { this.outputType = value; this.IsDirty = true; } } [Category("Application")] [DisplayName("DefaultNamespace")] [Description("Specifies the default namespace for added items.")] public string DefaultNamespace { get { return this.defaultNamespace; } set { this.defaultNamespace = value; this.IsDirty = true; } } protected override void BindProperties() { this.assemblyName = this.ProjectMgr.GetProjectProperty("AssemblyName", true); this.defaultNamespace = this.ProjectMgr.GetProjectProperty("RootNamespace", false); string outputType = this.ProjectMgr.GetProjectProperty("OutputType", false); this.outputType = (OutputType)Enum.Parse(typeof(OutputType), outputType); } protected override int ApplyChanges() { this.ProjectMgr.SetProjectProperty("AssemblyName", this.assemblyName); this.ProjectMgr.SetProjectProperty("OutputType", this.outputType.ToString()); this.ProjectMgr.SetProjectProperty("RootNamespace", this.defaultNamespace); this.IsDirty = false; return VSConstants.S_OK; } } }GeneralPropertyPagesınıfı AssemblyName, OutputType ve RootNamespace adlı üç ortak özelliği kullanıma sunar. AssemblyName'in ayarlanmış bir yöntemi olmadığından salt okunur bir özellik olarak görüntülenir. OutputType numaralandırılmış bir sabit olduğundan açılan liste olarak görünür.SettingsPageTemel sınıf, özellikleri kalıcı hale getirmek içinProjectMgrsağlar.BindPropertiesyöntemi,ProjectMgrkalıcı özellik değerlerini almak ve karşılık gelen özellikleri ayarlamak için kullanır.ApplyChangesyöntemi, özelliklerin değerlerini almak ve bunları proje dosyasında kalıcı hale getirmek için kullanırProjectMgr. Özellik kümesi yöntemi, özelliklerin kalıcı olması gerektiğini belirtmek için true olarak ayarlanırIsDirty. Kalıcılık, projeyi veya çözümü kaydettiğinizde oluşur.SimpleProject çözümünü yeniden derleyin ve hata ayıklamaya başlayın. Deneysel örnek görünmelidir.
Deneysel örnekte yeni bir SimpleProject Uygulaması oluşturun.
Visual Studio, Visual Studio şablonunu kullanarak proje oluşturmak için proje fabrikanızı çağırır. Yeni Program.cs dosyası kod düzenleyicisinde açılır.
Çözüm Gezgini'nde proje düğümüne sağ tıklayın ve özellikler'i seçin. Özellik Sayfaları iletişim kutusu görüntülenir.
Proje özellik sayfasını test etme
Artık özellik değerlerini değiştirip değiştiremeyeceğinizi test edebilirsiniz.
MyConsoleApplication Özellik Sayfaları iletişim kutusunda DefaultNamespace değerini MyApplication olarak değiştirin.
OutputType özelliğini ve ardından Sınıf Kitaplığı'nı seçin.
Uygula'ı seçin ve ardından Tamam'ı seçin.
Özellik Sayfaları iletişim kutusunu yeniden açın ve değişikliklerinizin kalıcı olduğunu doğrulayın.
Visual Studio'nun deneysel örneğini kapatın.
Deneysel örneği yeniden açın.
Özellik Sayfaları iletişim kutusunu yeniden açın ve değişikliklerinizin kalıcı olduğunu doğrulayın.
Visual Studio'nun deneysel örneğini kapatın.