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.
Visual Studio'da projeler, geliştiricilerin kaynak kod dosyalarını ve diğer varlıkları düzenlemek için kullandığı kapsayıcılardır. Projeler Çözüm Gezgini çözümlerin alt öğeleri olarak görünür. Projeler, kaynak kodunu düzenlemenize, derlemenize, hata ayıklamanıza ve dağıtmanıza ve Web hizmetlerine, veritabanlarına ve diğer kaynaklara başvurular oluşturmanıza olanak sağlar.
Projeler proje dosyalarında tanımlanır, örneğin Visual C# projesi için .csproj dosyası. Kendi proje dosya adı uzantısına sahip kendi proje türünüzü oluşturabilirsiniz. Proje türleri hakkında daha fazla bilgi için bkz . Proje türleri.
Dekont
Visual Studio'yu özel bir proje türüyle genişletmeniz gerekiyorsa, sıfırdan proje sistemi oluşturmaya kıyasla çeşitli avantajları olan Visual Studio proje sisteminden (VSPS) yararlanmanızı kesinlikle öneririz:
Daha kolay ekleme. Temel bir proje sistemi bile on binlerce kod satırı gerektirir. VSPS'yi kullanmak, gereksinimlerinize göre özelleştirmeye hazır olmadan önce ekleme maliyetini birkaç tıklamaya düşürür.
Daha kolay bakım. VSPS'yi kullanarak yalnızca kendi senaryolarınızı korumanız gerekir. Tüm proje sistemi altyapısının bakımı biz tarafından gerçekleştirilir.
Visual Studio'nun Visual Studio 2013'ten eski sürümlerini hedeflemeniz gerekiyorsa, Visual Studio uzantısında VSPS'den yararlanamazsınız. Bu durumda, bu izlenecek yol başlamak için iyi bir yerdir.
Bu izlenecek yol, .myproj proje dosya adı uzantısına sahip bir proje türünün nasıl oluşturulacağını gösterir. Bu kılavuz, mevcut Visual C# proje sisteminden ödünç alınıyor.
Dekont
Uzantı projeleri hakkında daha fazla örnek için bkz . VSSDK örnekleri.
Bu kılavuzda şu görevlerin nasıl yerine getir edileceği öğretlenmiştir:
Temel bir proje türü oluşturun.
Temel bir proje şablonu oluşturun.
Proje şablonunu Visual Studio'ya kaydedin.
Yeni Proje iletişim kutusunu açıp şablonunuzu kullanarak bir proje örneği oluşturun.
Proje sisteminiz için bir proje fabrikası oluşturun.
Proje sisteminiz için bir proje düğümü oluşturun.
Proje sistemi için özel simgeler ekleyin.
Temel şablon parametresi değişimini uygulayın.
Önkoşullar
Projeler için Yönetilen Paket Çerçevesi'nin kaynak kodunu indirin. Dosyayı, oluşturacağınız çözümün erişebileceği bir konuma ayıklayın.
Temel proje türü oluşturma
SimpleProject adlı bir C# VSIX projesi oluşturun. (Dosya>Yeni>Projesi ve ardından Visual C#>Genişletilebilirlik>VSIX Projesi). Visual Studio Paketi proje öğesi şablonu ekleyin (Çözüm Gezgini proje düğümüne sağ tıklayın ve Yeni Öğe Ekle'yi>seçin, ardından Genişletilebilirlik>Visual Studio Paketi'ne gidin). Dosyayı SimpleProjectPackage olarak adlandırın.
Temel proje şablonu oluşturma
Şimdi, yeni .myproj proje türünü uygulamak için bu temel VSPackage'ı değiştirebilirsiniz. .myproj proje türünü temel alan bir proje oluşturmak için Visual Studio'nun yeni projeye eklenecek dosyaları, kaynakları ve başvuruları bilmesi gerekir. Bu bilgileri sağlamak için proje dosyalarını bir proje şablonu klasörüne yerleştirin. Bir kullanıcı proje oluşturmak için .myproj projesini kullandığında, dosyalar yeni projeye kopyalanır.
Temel proje şablonu oluşturmak için
Projeye biri diğerinin altında olmak üzere üç klasör ekleyin: Templates\Projects\SimpleProject. (In Çözüm Gezgini SimpleProject proje düğümüne sağ tıklayın, Ekle'nin üzerine gelin ve Yeni Klasör'e tıklayın. Klasöre Şablonlar adını verin. Şablonlar klasörüne Projeler adlı bir klasör ekleyin. Projeler klasörüne SimpleProject adlı bir klasör ekleyin.)
Templates\Projects\SimpleProject klasörüne SimpleProject.ico adlı simge olarak kullanmak üzere bir Bit Eşlem Görüntüsü dosyası ekleyin. Ekle'ye tıkladığınızda simge düzenleyicisi açılır.
Simgeyi ayırt edici hale getirin. Bu simge, izlenecek kılavuzun devamında Yeni Proje iletişim kutusunda görünür.
Simgeyi kaydedin ve simge düzenleyicisini kapatın.
Templates\Projects\SimpleProject klasörüne Program.cs adlı bir Sınıf öğesi ekleyin.
Mevcut kodu aşağıdaki satırlarla değiştirin.
using System; using System.Collections.Generic; using System.Text; namespace $nameSpace$ { public class $className$ { static void Main(string[] args) { Console.WriteLine("Hello VSX!!!"); Console.ReadKey(); } } }
Önemli
Bu Program.cs kodunun son biçimi değildir; değiştirme parametreleri sonraki bir adımda ele alınacaktır. Derleme hataları görebilirsiniz, ancak dosyanın BuildAction'ı İçerik olduğu sürece projeyi her zamanki gibi derleyip çalıştırabilmeniz gerekir.
Dosyayı kaydedin.
AssemblyInfo.cs dosyasını Özellikler klasöründen Projects\SimpleProject klasörüne kopyalayın.
Projects\SimpleProject klasörüne SimpleProject.myproj adlı bir XML dosyası ekleyin.
Dekont
Bu türdeki tüm projelerin dosya adı uzantısı .myproj'dır. Değiştirmek istiyorsanız, izlenecek yolda bahsedildiği her yerde değiştirmeniz gerekir.
Mevcut içeriği aşağıdaki satırlarla değiştirin.
<?xml version="1.0" encoding="utf-8" ?> <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <SchemaVersion>2.0</SchemaVersion> <ProjectGuid></ProjectGuid> <OutputType>Exe</OutputType> <RootNamespace>MyRootNamespace</RootNamespace> <AssemblyName>MyAssemblyName</AssemblyName> <EnableUnmanagedDebugging>false</EnableUnmanagedDebugging> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)' == 'Debug' "> <DebugSymbols>true</DebugSymbols> <OutputPath>bin\Debug\</OutputPath> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)' == 'Release' "> <DebugSymbols>false</DebugSymbols> <OutputPath>bin\Release\</OutputPath> </PropertyGroup> <ItemGroup> <Reference Include="mscorlib" /> <Reference Include="System" /> <Reference Include="System.Data" /> <Reference Include="System.Xml" /> </ItemGroup> <ItemGroup> <Compile Include="AssemblyInfo.cs"> <SubType>Code</SubType> </Compile> <Compile Include="Program.cs"> <SubType>Code</SubType> </Compile> </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> </Project>
Dosyayı kaydedin.
Özellikler penceresinde AssemblyInfo.cs, Program.cs, SimpleProject.ico ve SimpleProject.myproj derleme eylemini İçerik olarak ayarlayın ve VSIX'e Ekle özelliklerini True olarak ayarlayın.
Bu proje şablonu, hem Hata Ayıklama yapılandırmasına hem de Yayın yapılandırmasına sahip temel bir Visual C# projelerini açıklar. Proje iki kaynak dosya içerir: AssemblyInfo.cs ve Program.cs ve birkaç derleme başvurusu. Şablondan bir proje oluşturulduğunda ProjectGuid değeri otomatik olarak yeni bir GUID ile değiştirilir.
Çözüm Gezgini'da genişletilmiş Şablonlar klasörü aşağıdaki gibi görünmelidir:
Templates
Projects
SimpleProject
AssemblyInfo.cs
Program.cs
SimpleProject.ico
SimpleProject.myproj
Temel proje fabrikası oluşturma
Visual Studio'ya proje şablonu klasörünüzün konumunu belirtmeniz gerekir. Bunu yapmak için proje fabrikasını uygulayan VSPackage sınıfına bir öznitelik ekleyin, böylece VSPackage oluşturulduğunda şablon konumu sistem kayıt defterine yazılır. Başlangıç olarak, proje fabrikası GUID'i tarafından tanımlanan temel bir proje fabrikası oluşturarak başlayın. Proje fabrikasını ProvideProjectFactoryAttribute sınıfa bağlamak için özniteliğini SimpleProjectPackage
kullanın.
Temel bir proje fabrikası oluşturmak için
Proje fabrikanız için GUID'ler oluşturun (Araçlar menüsünde GUID Oluştur'a tıklayın) veya aşağıdaki örnekteki guid'yi kullanın. GUID'leri
SimpleProjectPackage
, önceden tanımlanmışPackageGuidString
olan bölümünün yakınındaki sınıfına ekleyin. GUID'ler hem GUID biçiminde hem de dize biçiminde olmalıdır. Sonuçta elde edilen kod aşağıdaki örneğe benzemelidir.public sealed class SimpleProjectPackage : Package { ... public const string SimpleProjectPkgString = "96bf4c26-d94e-43bf-a56a-f8500b52bfad"; public const string SimpleProjectFactoryString = "471EC4BB-E47E-4229-A789-D1F5F83B52D4"; public static readonly Guid guidSimpleProjectFactory = new Guid(SimpleProjectFactoryString); }
SimpleProjectFactory.cs adlı en üst SimpleProject klasörüne bir sınıf ekleyin.
Aşağıdaki kullanım yönergelerini ekleyin:
using System.Runtime.InteropServices; using Microsoft.VisualStudio.Shell;
Sınıfına
SimpleProjectFactory
bir GUID özniteliği ekleyin. özniteliğinin değeri yeni proje fabrikası GUID değeridir.[Guid(SimpleProjectPackage.SimpleProjectFactoryString)] class SimpleProjectFactory { }
Artık proje şablonunuzu kaydedebilirsiniz.
Proje şablonunu kaydetmek için
SimpleProjectPackage.cs dosyasında aşağıdaki gibi sınıfına
SimpleProjectPackage
bir ProvideProjectFactoryAttribute öznitelik ekleyin.[ProvideProjectFactory( typeof(SimpleProjectFactory), "Simple Project", "Simple Project Files (*.myproj);*.myproj", "myproj", "myproj", @"Templates\Projects\SimpleProject", LanguageVsTemplate = "SimpleProject")] [Guid(SimpleProjectPackage.PackageGuidString)] public sealed class SimpleProjectPackage : Package
Çözümü yeniden derleyin ve hatasız derlendiğini doğrulayın.
Yeniden oluşturma, proje şablonunu kaydeder.
ve parametreleri
defaultProjectExtension
possibleProjectExtensions
proje dosya adı uzantısına (.myproj) ayarlanır.projectTemplatesDirectory
parametresi Templates klasörünün göreli yoluna ayarlanır. Derleme sırasında bu yol tam derlemeye dönüştürülür ve proje sistemini kaydetmek için kayıt defterine eklenir.
Şablon kaydını test edin
Şablon kaydı, Visual Studio'ya proje şablon klasörünüzün konumunu bildirir; böylece Visual Studio, Yeni Proje iletişim kutusunda şablon adını ve simgesini görüntüleyebilir.
Şablon kaydını test etmek için
Visual Studio'nun deneysel bir örneğinde hata ayıklamaya başlamak için F5 tuşuna basın.
Deneysel örnekte, yeni oluşturduğunuz proje türünde yeni bir proje oluşturun. Yeni Proje iletişim kutusunda, Yüklü şablonlar altında SimpleProject ifadesini görmeniz gerekir.
Artık kayıtlı bir proje fabrikanız var. Ancak, henüz bir proje oluşturamaz. Proje paketi ve proje fabrikası, bir proje oluşturmak ve başlatmak için birlikte çalışır.
Yönetilen Paket Çerçevesi kodunu ekleme
Proje paketi ile proje fabrikası arasındaki bağlantıyı uygulayın.
Yönetilen Paket Çerçevesi için kaynak kodu dosyalarını içeri aktarın.
SimpleProject projesini kaldırın (Çözüm Gezgini proje düğümünü seçin ve bağlam menüsünde Projeyi Kaldır'a tıklayın.) ve proje dosyasını XML düzenleyicisinde açın.
Proje dosyasına aşağıdaki blokları ekleyin (İçeri aktarma> bloklarının <hemen üstüne). Az önce indirdiğiniz Yönetilen Paket Çerçevesi kodunda ProjectBase.files dosyasının konumuna ayarlayın
ProjectBasePath
. Yol adına ters eğik çizgi eklemeniz gerekebilir. Bunu yapmazsanız, proje Yönetilen Paket Çerçevesi kaynak kodunu bulamıyor olabilir.<PropertyGroup> <ProjectBasePath>your path here\</ProjectBasePath> <RegisterWithCodebase>true</RegisterWithCodebase> </PropertyGroup> <Import Project="$(ProjectBasePath)\ProjectBase.Files" />
Önemli
Yolun sonundaki ters eğik çizgiyi unutmayın.
Projeyi yeniden yükleyin.
Aşağıdaki derlemelere başvurular ekleyin:
Microsoft.VisualStudio.Designer.Interfaces
(in <VSSDK install>\VisualStudioIntegration\Common\Assemblies\v2.0)WindowsBase
Microsoft.Build.Tasks.v4.0
Proje fabrikasını başlatmak için
SimpleProjectPackage.cs dosyasına aşağıdaki
using
yönergeyi ekleyin.using Microsoft.VisualStudio.Project;
sınıfından
SimpleProjectPackage
türetilirMicrosoft.VisualStudio.Package.ProjectPackage
.public sealed class SimpleProjectPackage : ProjectPackage
Proje fabrikasını kaydedin. aşağıdaki satırı yöntemine
SimpleProjectPackage.Initialize
ekleyin, hemen sonrabase.Initialize
.base.Initialize(); this.RegisterProjectFactory(new SimpleProjectFactory(this));
soyut özelliğini
ProductUserContext
uygulayın:public override string ProductUserContext { get { return ""; } }
SimpleProjectFactory.cs dosyasında, mevcut
using
yönergelerin arkasına aşağıdakiusing
yönergeyi ekleyin.using Microsoft.VisualStudio.Project;
sınıfından
SimpleProjectFactory
türetilirProjectFactory
.class SimpleProjectFactory : ProjectFactory
Sınıfına aşağıdaki sahte yöntemi
SimpleProjectFactory
ekleyin. Bu yöntemi sonraki bir bölümde uygulayacaksınız.protected override ProjectNode CreateProject() { return null; }
Sınıfına aşağıdaki alanı ve oluşturucuyu
SimpleProjectFactory
ekleyin. BuSimpleProjectPackage
başvuru, bir hizmet sağlayıcısı sitesi ayarlamada kullanılabilmesi için özel bir alanda önbelleğe alınır.private SimpleProjectPackage package; public SimpleProjectFactory(SimpleProjectPackage package) : base(package) { this.package = package; }
Çözümü yeniden derleyin ve hatasız derlendiğini doğrulayın.
Proje fabrikası uygulamasını test etme
Proje fabrikası uygulamanız için oluşturucunun çağrılıp çağrılmadığını test edin.
Proje fabrikası uygulamasını test etmek için
SimpleProjectFactory.cs dosyasında, oluşturucuda aşağıdaki satırda
SimpleProjectFactory
bir kesme noktası ayarlayın.this.package = package;
Visual Studio'nun deneysel bir örneğini başlatmak için F5 tuşuna basın.
Deneysel örnekte yeni bir proje oluşturmaya başlayın. Yeni Proje iletişim kutusunda SimpleProject proje türünü seçin ve tamam'a tıklayın. Yürütme kesme noktasında durur.
Kesme noktasını temizleyin ve hata ayıklamayı durdurun. Henüz bir proje düğümü oluşturmadığımız için proje oluşturma kodu yine de özel durumlar oluşturur.
ProjectNode sınıfını genişletme
Artık sınıfından SimpleProjectNode
türetilen sınıfını ProjectNode
uygulayabilirsiniz. ProjectNode
Temel sınıf aşağıdaki proje oluşturma görevlerini işler:
SimpleProject.myproj proje şablonu dosyasını yeni proje klasörüne kopyalar. Kopya, Yeni Proje iletişim kutusuna girilen ada göre yeniden adlandırılır. Özellik
ProjectGuid
değeri yeni bir GUID ile değiştirilir.Proje şablon dosyası SimpleProject.myproj'un MSBuild öğelerinin çapraz geçişini yapıp öğeleri arar
Compile
. HerCompile
hedef dosya için, dosyayı yeni proje klasörüne kopyalar.Türetilmiş
SimpleProjectNode
sınıf şu görevleri işler:Çözüm Gezgini proje ve dosya düğümleri için simgelerin oluşturulmasını veya seçilmesini sağlar.
Ek proje şablonu parametresi değiştirmelerinin belirtilmesine olanak tanır.
ProjectNode sınıfını genişletmek için
adlı
SimpleProjectNode.cs
bir sınıf ekleyin.Mevcut kodu aşağıdaki kodla değiştirin.
using System; using System.Collections.Generic; using Microsoft.VisualStudio.Project; namespace SimpleProject { public class SimpleProjectNode : ProjectNode { private SimpleProjectPackage package; public SimpleProjectNode(SimpleProjectPackage package) { this.package = package; } public override Guid ProjectGuid { get { return SimpleProjectPackage.guidSimpleProjectFactory; } } public override string ProjectType { get { return "SimpleProjectType"; } } public override void AddFileFromTemplate( string source, string target) { this.FileTemplateProcessor.UntokenFile(source, target); this.FileTemplateProcessor.Reset(); } } }
Bu
SimpleProjectNode
sınıf uygulaması şu geçersiz kılınmış yöntemlere sahiptir:
ProjectGuid
, proje fabrikası GUID'sini döndürür.ProjectType
, proje türünün yerelleştirilmiş adını döndürür.AddFileFromTemplate
, seçili dosyaları şablon klasöründen hedef projeye kopyalar. Bu yöntem daha sonraki bir bölümde daha uygulanır.SimpleProjectNode
Oluşturucu, oluşturucu gibi bir başvuruyuSimpleProjectFactory
daha sonra kullanmak üzere özel bir alanda önbelleğe alırSimpleProjectPackage
.sınıfını
SimpleProjectFactory
sınıfa bağlamak içinSimpleProjectNode
yöntemindeSimpleProjectFactory.CreateProject
yeniSimpleProjectNode
bir örnek oluşturup daha sonra kullanmak üzere özel bir alanda önbelleğe almalısınız.
Proje fabrika sınıfını ve düğüm sınıfını bağlamak için
SimpleProjectFactory.cs dosyasına aşağıdaki
using
yönergeyi ekleyin:using IOleServiceProvider = Microsoft.VisualStudio.OLE.Interop.IServiceProvider;
SimpleProjectFactory.CreateProject
aşağıdaki kodu kullanarak yöntemini değiştirin.protected override ProjectNode CreateProject() { SimpleProjectNode project = new SimpleProjectNode(this.package); project.SetSite((IOleServiceProvider) ((IServiceProvider)this.package).GetService( typeof(IOleServiceProvider))); return project; }
Çözümü yeniden derleyin ve hatasız derlendiğini doğrulayın.
ProjectNode sınıfını test etme
Proje hiyerarşisi oluşturup oluşturmadığını görmek için proje fabrikanızı test edin.
ProjectNode sınıfını test etmek için
Hata ayıklamaya başlamak için F5'e basın. Deneysel örnekte yeni bir SimpleProject oluşturun.
Visual Studio proje oluşturmak için proje fabrikanızı çağırmalıdır.
Visual Studio'nun deneysel örneğini kapatın.
Özel proje düğümü ekle simgesi
Önceki bölümdeki proje düğümü simgesi varsayılan bir simgedir. Bunu özel bir simgeyle değiştirebilirsiniz.
Özel proje düğümü simgesi eklemek için
Kaynaklar klasörüne SimpleProjectNode.bmp adlı bir bit eşlem dosyası ekleyin.
Özellikler pencerelerinde bit eşlemi 16 x 16 piksele düşürün. Bit eşlemi ayırt edici hale getirin.
Özellikler penceresinde bit eşlem derleme eylemini Ekli Kaynak olarak değiştirin.
SimpleProjectNode.cs dosyasına aşağıdaki
using
yönergeleri ekleyin:using System.Drawing; using System.Windows.Forms;
Sınıfına aşağıdaki statik alanı ve oluşturucuyu
SimpleProjectNode
ekleyin.private static ImageList imageList; static SimpleProjectNode() { imageList = Utilities.GetImageList( typeof(SimpleProjectNode).Assembly.GetManifestResourceStream( "SimpleProject.Resources.SimpleProjectNode.bmp")); }
Sınıfın başına
SimpleProjectNode
aşağıdaki özelliği ekleyin.internal static int imageIndex; public override int ImageIndex { get { return imageIndex; } }
Örnek oluşturucuyu aşağıdaki kodla değiştirin.
public SimpleProjectNode(SimpleProjectPackage package) { this.package = package; imageIndex = this.ImageHandler.ImageList.Images.Count; foreach (Image img in imageList.Images) { this.ImageHandler.AddImage(img); } }
Statik yapı sırasında,
SimpleProjectNode
derleme bildirim kaynaklarından proje düğümü bit eşlemini alır ve daha sonra kullanmak üzere özel bir alanda önbelleğe alır. Görüntü yolunun GetManifestResourceStream söz dizimine dikkat edin. Bir derlemeye katıştırılmış bildirim kaynaklarının adlarını görmek için yöntemini kullanın GetManifestResourceNames . Bu yöntem derlemeye uygulandığındaSimpleProject
, sonuçlar aşağıdaki gibi olmalıdır:
SimpleProject.Resources.resources
VisualStudio.Project.resources
SimpleProject.VSPackage.resources
Resources.imagelis.bmp
Microsoft.VisualStudio.Project.DontShowAgainDialog.resources
Microsoft.VisualStudio.Project.SecurityWarningDialog.resources
SimpleProject.Resources.SimpleProjectNode.bmp
Örnek oluşturma
ProjectNode
sırasında, temel sınıf Resources\imagelis.bmp dosyasından yaygın olarak kullanılan 16 x 16 bit eşlemlerin eklendiği Resources.imagelis.bmp dosyasını yükler. Bu bit eşlem listesi olarakSimpleProjectNode
ImageHandler.ImageList
kullanılabilir hale getirildi.SimpleProjectNode
proje düğümü bit eşlemini listeye ekler. Görüntü listesindeki proje düğümü bit eşleminin uzaklığı, daha sonra ortakImageIndex
özelliğin değeri olarak kullanılmak üzere önbelleğe alınır. Visual Studio, proje düğümü simgesi olarak hangi bit eşlemin görüntüleneceğini belirlemek için bu özelliği kullanır.
Özel proje düğümü simgesini test etme
Özel proje düğümü simgenizi içeren bir proje hiyerarşisi oluşturup oluşturmadığını görmek için proje fabrikanızı test edin.
Özel proje düğümü simgesini test etmek için
Hata ayıklamayı başlatın ve deneysel örnekte yeni bir SimpleProject oluşturun.
Yeni oluşturulan projede SimpleProjectNode.bmp dosyasının proje düğümü simgesi olarak kullanıldığına dikkat edin.
Kod düzenleyicisinde Program.cs dosyasını açın. Aşağıdaki koda benzeyen kaynak kodu görmeniz gerekir.
using System; using System.Collections.Generic; using System.Text; namespace $nameSpace$ { public class $className$ { static void Main(string[] args) { Console.WriteLine("Hello VSX!!!"); Console.ReadKey(); } } }
$nameSpace$ ve $className$ şablon parametrelerinin yeni değerlere sahip olmadığını fark edin. Sonraki bölümde şablon parametresi değiştirmenin nasıl uygulanacağını öğreneceksiniz.
Şablon parametrelerini değiştirme
Önceki bir bölümde, özniteliğini kullanarak proje şablonunu Visual Studio'ya ProvideProjectFactory
kaydettiniz. Şablon klasörünün yolunu bu şekilde kaydetmek, sınıfı geçersiz kılıp genişleterek temel şablon parametresi değiştirmesini ProjectNode.AddFileFromTemplate
etkinleştirmenize olanak tanır. Daha fazla bilgi için bkz . Yeni proje oluşturma: Kaputun altında, ikinci bölüm.
Şimdi sınıfa AddFileFromTemplate
değiştirme kodu ekleyin.
Şablon parametrelerini değiştirmek için
SimpleProjectNode.cs dosyasına aşağıdaki
using
yönergeyi ekleyin.using System.IO;
AddFileFromTemplate
aşağıdaki kodu kullanarak yöntemini değiştirin.public override void AddFileFromTemplate( string source, string target) { string nameSpace = this.FileTemplateProcessor.GetFileNamespace(target, this); string className = Path.GetFileNameWithoutExtension(target); this.FileTemplateProcessor.AddReplace("$nameSpace$", nameSpace); this.FileTemplateProcessor.AddReplace("$className$", className); this.FileTemplateProcessor.UntokenFile(source, target); this.FileTemplateProcessor.Reset(); }
Atama deyiminden hemen sonra yönteminde
className
bir kesme noktası ayarlayın.Atama deyimleri, bir ad alanı ve yeni bir sınıf adı için makul değerleri belirler. İki
ProjectNode.FileTemplateProcessor.AddReplace
yöntem çağrısı, bu yeni değerleri kullanarak ilgili şablon parametresi değerlerinin yerini alır.
Şablon parametresi değiştirmesini test edin
Artık şablon parametresi değişimini test edebilirsiniz.
Şablon parametresi değiştirmesini test etmek için
Hata ayıklamayı başlatın ve deneysel örnekte yeni bir SimpleProject oluşturun.
Yürütme yöntemindeki kesme noktasında
AddFileFromTemplate
durur.ve
className
parametrelerininnameSpace
değerlerini inceleyin.nameSpace
, \Templates\Projects\SimpleProject\SimpleProject.myproj proje şablonu dosyasında RootNamespace> öğesinin değeri <verilir. Bu durumda, değeri olurMyRootNamespace
.className
dosya adı uzantısı olmadan sınıf kaynak dosya adının değeri verilir. Bu durumda hedef klasöre kopyalanacak ilk dosya AssemblyInfo.cs'dir; bu nedenle className değeri olurAssemblyInfo
.
Kesme noktasını kaldırın ve yürütmeye devam etmek için F5 tuşuna basın.
Visual Studio proje oluşturmayı tamamlamalıdır.
Kod düzenleyicisinde Program.cs dosyasını açın. Aşağıdaki koda benzeyen kaynak kodu görmeniz gerekir.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace MyRootNamespace { public class Program { static void Main(string[] args) { Console.WriteLine("Hello VSX!!!"); Console.ReadKey(); } } }
Ad alanının şimdi
MyRootNamespace
ve sınıf adının artıkProgram
olduğuna dikkat edin.Projede hata ayıklamaya başlayın. Yeni projenin konsol penceresinde "Hello VSX!!" derlemesi, çalıştırması ve görüntülemesi gerekir.
Tebrikler! Temel bir yönetilen proje sistemi uyguladınız.