Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
První návod v této sérii: Vytvoření základního projektového systému, část 1, ukazuje, jak vytvořit základní projektový systém. Tento názorný postup vychází ze základního systému projektů přidáním šablony sady Visual Studio, stránky vlastností a dalších funkcí. Než začnete s tímto návodem, musíte dokončit první kroky.
Tento návod ukazuje, jak vytvořit typ projektu, který má příponu názvu souboru projektu .myproj. K dokončení návodu nemusíte vytvářet vlastní jazyk, protože si návod půjčuje z existujícího systému projektů Visual C#.
V tomto názorném postupu se naučíte, jak provádět tyto úlohy:
Vytvořte šablonu sady Visual Studio.
Nasazení šablony sady Visual Studio
V dialogovém okně Nový projekt vytvořte podřízený uzel typu projektu.
Povolte nahrazení parametrů v šabloně sady Visual Studio.
Umožňuje vytvořit stránku vlastností projektu.
Poznámka:
Kroky v tomto názorném postupu jsou založené na projektu jazyka C#. S výjimkou specifik, jako jsou přípony názvů souborů a kód, však můžete použít stejný postup pro projekt jazyka Visual Basic.
Vytvoření šablony sady Visual Studio
- Vytvoření základního systému projektu, část 1 ukazuje, jak vytvořit základní šablonu projektu a přidat ji do systému projektu. Také ukazuje, jak tuto šablonu zaregistrovat v sadě Visual Studio pomocí ProvideProjectFactoryAttribute atributu, který zapíše úplnou cestu ke složce \Templates\Projects\SimpleProject\ v systémovém registru.
Pomocí šablony sady Visual Studio (soubor .vstemplate ) místo základní šablony projektu můžete určit, jak se šablona zobrazí v dialogovém okně Nový projekt a jak se parametry šablony nahradí. Soubor .vstemplate je soubor XML, který popisuje, jak mají být zdrojové soubory zahrnuty při vytvoření projektu pomocí systémové šablony projektu. Samotný systém projektu je sestaven sbíráním souboru .vstemplate a zdrojových souborů do .zip souboru a nasazen zkopírováním .zip souboru do umístění, které je známé ve Visual Studio. Tento proces je podrobněji vysvětlen dále v tomto názorném postupu.
V sadě Visual Studio otevřete řešení SimpleProject, které jste vytvořili pomocí příkazu Vytvořit základní projektový systém, část 1.
V souboru SimpleProjectPackage.cs vyhledejte atribut ProvideProjectFactory. Nahraďte druhý parametr (název projektu) hodnotou null a čtvrtý parametr (cesta ke složce šablony projektu) řetězcem .\\NullPath následujícím způsobem.
[ProvideProjectFactory(typeof(SimpleProjectFactory), null, "Simple Project Files (*.myproj);*.myproj", "myproj", "myproj", ".\\NullPath", LanguageVsTemplate = "SimpleProject")]Přidejte soubor XML s názvem SimpleProject.vstemplate do složky \Templates\Projects\SimpleProject\ .
Nahraďte obsah SimpleProject.vstemplate následujícím kódem.
<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>V okně Vlastnosti vyberte všech pět souborů ve složce \Templates\Projects\SimpleProject\ a nastavte akci sestavení na ZipProject.
Oddíl <TemplateData> určuje umístění a vzhled typu projektu SimpleProject v dialogovém okně Nový projekt následujícím způsobem:
Element <Name> pojmenuje šablonu projektu jako SimpleProject Application.
Prvek <Popis> obsahuje popis, který se zobrazí v dialogovém okně Nový projekt při výběru šablony projektu.
Element <Icon> určuje ikonu, která se zobrazí společně s typem projektu SimpleProject.
Element <ProjectType> pojmenuje typ projektu v dialogovém okně Nový projekt . Tento název nahrazuje parametr název projektu atributu ProvideProjectFactory.
Poznámka:
Element <ProjectType> musí odpovídat
LanguageVsTemplateargumentuProvideProjectFactoryatributu v souboru SimpleProjectPackage.cs.Oddíl <TemplateContent> popisuje tyto soubory, které se generují při vytvoření nového projektu:
SimpleProject.myproj
Program.cs
AssemblyInfo.cs
Všechny tři soubory mají
ReplaceParametersnastavenou hodnotu true, což umožňuje nahrazení parametrů. Soubor Program.cs máOpenInEditornastavenou hodnotu true, což způsobí otevření souboru v editoru kódu při vytvoření projektu.Další informace o prvech ve schématu šablony sady Visual Studio najdete v referenčních informacích ke schématu šablon sady Visual Studio.
Poznámka:
Pokud má projekt více než jednu šablonu sady Visual Studio, každá šablona je v samostatné složce. Každý soubor v této složce musí mít akci sestavení nastavenou na ZipProject.
Přidání minimálního souboru .vsct
Visual Studio musí být spuštěné v režimu instalace, aby bylo možné rozpoznat novou nebo upravenou šablonu sady Visual Studio. Instalační režim vyžaduje, aby byl k dispozici soubor .vsct . Proto musíte do projektu přidat minimální soubor .vsct .
Do projektu SimpleProject přidejte soubor XML s názvem SimpleProject.vsct .
Obsah souboru SimpleProject.vsct nahraďte následujícím kódem.
<?xml version="1.0" encoding="utf-8" ?> <CommandTable xmlns="http://schemas.microsoft.com/VisualStudio/2005-10-18/CommandTable"> </CommandTable>Nastavte akci sestavení tohoto souboru na VSCTCompile. Můžete to provést pouze v souboru .csproj , ne v okně Vlastnosti . Ujistěte se, že akce sestavení tohoto souboru je v tomto okamžiku nastavena na Hodnotu Žádné .
Klepněte pravým tlačítkem myši na uzel SimpleProject a pak vyberte Upravit SimpleProject.csproj.
V souboru .csproj vyhledejte položku SimpleProject.vsct .
<None Include="SimpleProject.vsct" />Změňte akci sestavení na VSCTCompile.
<VSCTCompile Include="SimpleProject.vsct" />soubor projektu a zavři editor.
Uložte uzel SimpleProject a potom v Průzkumníku řešení vyberte Znovu načíst projekt.
Prozkoumání kroků sestavení šablony sady Visual Studio
Systém sestavení projektu VSPackage obvykle spouští Visual Studio v režimu instalace, když se změní soubor .vstemplate nebo projekt, který obsahuje soubor .vstemplate , se znovu sestaví. Můžete postupovat podle toho, že nastavíte úroveň podrobností nástroje MSBuild na normální nebo vyšší.
V podokně Možnosti>rozcestníku rozbalte část Všechna nastavení>Projekty a řešení>Sestavení a spuštění.
Nastavte možnost úroveň podrobností výstupu sestavení projektu MSBuild na normální.
V dialogovém okně Možnosti nástrojů> rozbalte oddíl Projekty a řešení>.
Nastavte možnost podrobností výstupu sestavení projektu MSBuild na Normální a vyberte OK.
- Znovu sestavte projekt SimpleProject.
Krok sestavení pro vytvoření souboru projektu .zip by měl vypadat podobně jako v následujícím příkladu.
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 ->
Nasazení šablony sady Visual Studio
Šablony sady Visual Studio neobsahují informace o cestě. Proto musí být soubor .zip šablony nasazen do umístění, které je známo pro Visual Studio. Umístění složky ProjectTemplates je obvykle <%LOCALAPPDATA%>\Microsoft\VisualStudio\14.0Exp\ProjectTemplates.
K nasazení projektové továrny musí mít instalační program oprávnění správce. Nasadí šablony v uzlu instalace sady Visual Studio: ...\Microsoft Visual Studio 14.0\Common7\IDE\ProjectTemplates.
Testování šablony sady Visual Studio
Otestujte projektovou továrnu a zjistěte, jestli vytváří hierarchii projektu pomocí šablony sady Visual Studio.
Resetujte experimentální instanci sady Visual Studio SDK.
Ve Windows 7: V nabídce Start vyhledejte složku Microsoft Visual Studio/Microsoft Visual Studio SDK/Tools a pak vyberte Obnovit experimentální instanci sady Microsoft Visual Studio.
V novějších verzích Windows: Na úvodní obrazovce zadejte Resetovat verzi< Microsoft Visual Studio >Experimentální instance.
Zobrazí se okno příkazového řádku. Až se zobrazí slova Stiskněte libovolnou klávesu, abyste mohli pokračovat, vyberte ENTER. Po zavření okna otevřete Visual Studio.
Znovu sestavte projekt SimpleProject a spusťte ladění. Zobrazí se experimentální instance.
V experimentální instanci vytvořte projekt SimpleProject. V dialogovém okně Nový projekt vyberte SimpleProject.
Měla by se zobrazit nová instance SimpleProject.
Vytvořte podřízený uzel typu projektu
Podřízený uzel můžete přidat do uzlu typu projektu v dialogovém okně Nový projekt . Například pro typ projektu SimpleProject můžete mít podřízené uzly pro konzolové aplikace, aplikace oken, webové aplikace atd.
Podřízené uzly se vytvářejí změnou souboru projektu a přidáním <OutputSubPath> podřízených uzlů do elementů <ZipProject>. Při zkopírování šablony během sestavení nebo nasazení se z každého podřízeného uzlu stane podsložka složky šablon projektu.
Tato část ukazuje, jak vytvořit podřízený uzel konzoly pro typ projektu SimpleProject.
Přejmenujte složku \Templates\Projects\SimpleProject\ na \Templates\Projects\ConsoleApp\.
V okně Vlastnosti vyberte všech pět souborů ve složce \Templates\Projects\ConsoleApp\ a ujistěte se, že je akce sestavení nastavená na ZipProject.
Do souboru SimpleProject.vstemplate přidejte následující řádek na konec oddílu <TemplateData> těsně před uzavírací značku.
<NumberOfParentCategoriesToRollUp>1</NumberOfParentCategoriesToRollUp>To způsobí, že šablona konzolové aplikace se zobrazí v podřízené uzlu konzoly i v nadřazené uzlu SimpleProject, což je jedna úroveň nad podřízeným uzlem.
Uložte soubor SimpleProject.vstemplate .
V souboru .csproj přidejte <OutputSubPath> do každého z elementů ZipProject. Rozbalte projekt jako předtím a upravte soubor projektu.
Vyhledejte elementy <ZipProject> . Do každého <zipProject> elementu přidejte <OutputSubPath> element a dejte mu hodnotu Console. 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>Přidejte tuto <skupinu PropertyGroup> do souboru projektu:
<PropertyGroup> <VsTemplateLanguage>SimpleProject</VsTemplateLanguage> </PropertyGroup>Uložte soubor projektu a znovu načtěte projekt.
Otestujte podřízený uzel typu projektu
Otestujte upravený soubor projektu a podívejte se, jestli se podřízený uzel konzoly zobrazí v dialogovém okně Nový projekt .
Spusťte nástroj Obnovit experimentální instanci sady Microsoft Visual Studio .
Znovu sestavte projekt SimpleProject a spusťte ladění. Experimentální instance by se měla zobrazit.
V dialogovém okně Nový projekt vyberte uzel SimpleProject . Šablona konzolové aplikace by se měla zobrazit v podokně Šablony .
Rozšířte uzel SimpleProject. Měl by se zobrazit podřízený uzel Console. Šablona aplikace SimpleProject se bude dál zobrazovat v podokně Šablony .
Vyberte Zrušit a ukončete ladění.
Nahrazení parametrů šablony projektu
-
Vytvoření základního systému projektu, část 1 ukázalo, jak přepsat metodu
ProjectNode.AddFileFromTemplate, aby se provedl základní druh nahrazení parametru šablony. V této části se dozvíte, jak používat sofistikovanější parametry šablony sady Visual Studio.
Při vytváření projektu pomocí šablony sady Visual Studio v dialogovém okně Nový projekt se parametry šablony nahradí řetězci pro přizpůsobení projektu. Parametr šablony je speciální token, který začíná a končí znakem dolaru, například $time$. Následující dva parametry jsou užitečné zejména pro povolení přizpůsobení v projektech založených na šabloně:
$GUID[1-10]$ je nahrazen novým identifikátorem GUID. Můžete zadat až 10 jedinečných identifikátorů GUID, například $guid 1$.
$safeprojectname$ je jméno zadané uživatelem v dialogovém okně Nový projekt změněno tak, aby odebralo všechny nebezpečné znaky a mezery.
Úplný seznam parametrů šablony najdete v tématu Parametry šablony.
K nahrazení parametrů šablony projektu
V souboru SimpleProjectNode.cs odeberte metodu
AddFileFromTemplate.V souboru \Templates\Projects\ConsoleApp\SimpleProject.myproj vyhledejte <vlastnost RootNamespace> a změňte její hodnotu na $safeprojectname$.
<RootNamespace>$safeprojectname$</RootNamespace>V souboru \Templates\Projects\SimpleProject\Program.cs nahraďte obsah souboru následujícím kódem:
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(); } } }Znovu sestavte projekt SimpleProject a spusťte ladění. Měla by se zobrazit experimentální instance.
Vytvořte novou konzolovou aplikaci SimpleProject. (V podokně Typy projektů vyberte SimpleProject. V části Nainstalované šablony sady Visual Studio vyberte Konzolová aplikace.)
V nově vytvořeném projektu otevřete Program.cs. Měl by vypadat přibližně takto (hodnoty GUID v souboru se liší.):
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(); } } }
Vytvoření stránky vlastností projektu
Pro typ projektu můžete vytvořit stránku vlastností, aby uživatelé mohli zobrazit a změnit vlastnosti v projektech založených na vaší šabloně. V této části se dozvíte, jak vytvořit stránku vlastností nezávislou na konfiguraci. Tato stránka základních vlastností používá mřížku atributů k zobrazení veřejných atributů, které zveřejňujete ve třídě stránky vlastností.
Odvozujte třídu stránky vlastnosti ze SettingsPage základní třídy. Mřížka vlastností poskytovaná SettingsPage třídou si je vědoma většiny primitivních datových typů a ví, jak je zobrazit. Kromě toho třída SettingsPage umí uložit hodnoty vlastností do souboru projektu.
Stránka vlastností, kterou vytvoříte v této části, umožňuje změnit a uložit tyto vlastnosti projektu:
Název Sestavení
OutputType
RootNamespace.
Do souboru SimpleProjectPackage.cs přidejte tento
ProvideObjectatribut doSimpleProjectPackagetřídy:[ProvideObject(typeof(GeneralPropertyPage))] public sealed class SimpleProjectPackage : ProjectPackageTím se zaregistruje třída
GeneralPropertyPagestránky vlastností u COM.Ve souboru SimpleProjectNode.cs přidejte do třídy tyto dvě přepsané metody
SimpleProjectNode: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; }Obě tyto metody vrátí seznam GUIDů stránky vlastností. Identifikátor GUID GeneralPropertyPage je jediným prvkem v poli, takže dialogové okno Stránky vlastností zobrazuje pouze jednu stránku.
Do projektu SimpleProject přidejte soubor třídy s názvem GeneralPropertyPage.cs .
Obsah tohoto souboru nahraďte následujícím kódem:
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; } } }Třída
GeneralPropertyPagezveřejňuje tři veřejné vlastnosti AssemblyName, OutputType a RootNamespace. Protože AssemblyName nemá žádnou metodu set, zobrazí se jako vlastnost jen pro čtení. OutputType je výčtová konstanta, takže se zobrazí jako rozevírací seznam.Základní
SettingsPagetřída umožňujeProjectMgrukládání vlastností. MetodaBindPropertiespoužíváProjectMgrk načtení trvalých hodnot vlastností a nastavení odpovídajících vlastností. MetodaApplyChangespoužíváProjectMgrk získání hodnot vlastností a jejich zachování do souboru projektu. Metoda set vlastnosti nastavíIsDirtyhodnotu true, která indikuje, že vlastnosti musí být trvalé. Trvalost nastane, když projekt nebo řešení uložíte.Znovu sestavte řešení SimpleProject a spusťte ladění. Měla by se zobrazit experimentální instance.
V experimentální instanci vytvořte novou aplikaci SimpleProject.
Visual Studio volá projektovou továrnu k vytvoření projektu pomocí šablony Visual Studio. Nový soubor Program.cs se otevře v editoru kódu.
V Průzkumníku řešení klikněte pravým tlačítkem myši na uzel projektu a pak vyberte Vlastnosti. Zobrazí se dialogové okno Stránky vlastností .
Test stránky vlastností projektu
Teď můžete otestovat, jestli můžete upravit a změnit hodnoty vlastností.
V dialogovém okně Stránky vlastností MyConsoleApplication změňte VýchozíOborNázvů na MyApplication.
Vyberte vlastnost OutputType a pak vyberte Knihovnu tříd.
Vyberte Použíta pak vyberte OK.
Znovu otevřete dialogové okno Stránky vlastností a ověřte, zda byly změny zachovány.
Zavřete experimentální instanci sady Visual Studio.
Znovu otevřete experimentální instanci.
Znovu otevřete dialogové okno Stránky vlastností a ověřte, zda byly změny zachovány.
Zavřete experimentální instanci sady Visual Studio.