在 Visual Studio 中,项目是开发人员用来组织源代码文件和其他属性显示在 解决方案资源管理器的容器。 项目可以将组织,生成,调试,并且,部署源代码并创建对 web 服务、数据库和其他资源。
通常,项目使用项目文件指定,例如, .csproj 文件的内容对于 Visual C# 项目。 可以创建拥有具有拥有项目文件扩展名的项目类型。 有关这些项目类型的更多信息,请参见 项目类型。
此演练介绍如何创建具有项目文件扩展名 .myproj 的项目类型。 ,因为从现有 Visual C# 的演练借用项目系统,若要完成本演练,不必将创建拥有语言。
备注
有关完整的语言项目系统的端对端示例,请参见。 Visual Studio 扩展性示例的 IronPython 示例、。
此演练演示如何完成以下任务:
创建一个基本项目类型。
创建一个基本的项目模板。
注册 Visual Studio 的项目模板。
使用模板,创建项实例将打开对话框 新项目 然后单击。
创建项目系统的项目工厂。
创建项目系统的项目节点。
添加项目系统的自定义图标。
实现基本模板参数替换。
备注
本演练中的步骤根据 C# 项目。但是,排除特定例如文件扩展名和代码,您可以为 Visual Basic 项目中使用相同的步骤。
系统必备
若要完成本演练,您必须安装 Visual Studio 2010 SDK。
备注
有关 Visual Studio SDK 的更多信息,请参见 扩展 Visual Studio 概述。若要查找有关中所列如何下载 Visual Studio SDK,请 Visual Studio Extensibility Developer Center 参见 MSDN 网站上。
Visual Studio 包 " 项目模板的位置
Visual Studio 包 " 项目模板可以在 新项目 对话框的三个不同位置找到:
在 Visual Basic 扩展性下。 该项的默认语言是 Visual Basic。
在 C# 扩展性下。 该项目的默认语言是 C#。
在其他项下键入扩展性。 该项的默认语言是 C#,但是, VB 和 C++ 中可用。
创建一个基本项目类型
项目类型,象大多数 Visual Studio 扩展,由 Vspackage 实现。 有关 Vspackage 的更多信息,请参见 自定义的 Visual Studio 演练使用 Vspackage。 若要创建项类型,必须先创建 VSPackage。
创建 VSPackage
创建名为 SimpleProject 的一个 VSPackage 项目。
在 选择一种编程语言 页上,选择 Visual C# 和 生成一个新密钥文件对程序集进行签名。
在 选择测试选项 页中,清除两个选项并单击 完成。
模板创建具有设置您指定的一个 VSPackage 项目。
创建一个基本的项目模板
现在,您可以修改此基本的 VSPackage 实现新的 .myproj 项类型。 若要创建基于 .myproj 项类型的项目, Visual Studio 必须知道哪些文件,资源,并引用添加到新项目。 若要提供此信息时,请将项目文件在项模板文件夹。 然后,那么,当用户使用 .myproj 项目时输入 新项目 对话框创建项目,文件被复制到新项目。
创建一个基本的项目模板
在 解决方案资源管理器,右击 SimpleProject 项目节点,指向 添加,然后单击 新文件夹。 将文件夹命名为 模板。
在 模板 文件夹中,添加名为 项目的文件夹。
在 项目 文件夹中,添加名为 SimpleProject的文件夹。
右击 SimpleProject 文件夹,指向 添加,然后单击 新项目。 将名为 SimpleProject.ico的图标文件。 单击 添加 打开图标编辑器。
使图标)。 此图标后将出现在 新项目 对话框在演练。
保存该图标并关闭图标编辑器。
在 SimpleProject 文件夹中,添加名为 Program.cs的一个 类 项目。 单击 添加 打开代码编辑器。
使用下行,替换现有代码。
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$ 和 $className$。
保存文件并关闭代码编辑器。
在 属性 文件夹中,复制 AssemblyInfo.cs 然后将其粘贴到 项目 \SimpleProject 文件夹。
在 属性 窗口中,将 AssemblyInfo.cs 生成操作 到 无。
在 解决方案资源管理器,右击 SimpleProject 文件夹,指向 添加,然后单击 新项目。 添加 XML 文件项目命名 SimpleProject.myproj。 单击 添加 打开 XML 编辑器。
备注
该类型的所有项目的文件扩展名为 .myproj。如果要更改,则必须更改其所有出现在本演练中。
使用下行,替换现有的内容。
<Project DefaultTargets="Build" xmlns="https://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> <SchemaVersion>2.0</SchemaVersion> <ProjectGuid>{99999999-9999-9999-9999-999999999999}</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>
保存文件并关闭 XML 编辑器。
在 属性 窗口中,将 Program.cs、 SimpleProject.ico 和 SimpleProject.myproj 生成操作 到 内容,并将其各自的 包含在 VSIX 属性设置为 true。
此项目模板可描述具有一个调试配置和发布配置的基本 Visual C# 项目。 该项目包含两个源文件, AssemblyInfo.cs 和 Program.cs 中,,还有若干个程序集引用。 在将项从模板中创建, ProjectGuid 值将新的 GUID 自动替换。
在 解决方案资源管理器,展开的 模板 文件夹应如下所示:
模板
项目
SimpleProject
AssemblyInfo.cs
Program.cs
SimpleProject.ico
SimpleProject.myproj
创建一个骨骼项目工厂
必须告诉 Visual Studio 项模板文件夹的位置。 为此,请将特性添加到实现项目工厂的 VSPackage 类,以便模板位置。系统注册表中,在 VSPackage 时生成。 通过创建由项目 factory GUID 确定的基本项目工厂启动。 使用 ProvideProjectFactoryAttribute 属性连接到 SimpleProjectPackage 项目工厂类。
创建一个骨骼项目工厂
在代码编辑器中打开 Guids.cs。
在 工具 菜单上,单击 创建 GUID。
创建项目工厂的 GUID 或使用于以下示例。 添加 GUID 到 GuidList。 GUID 必须以 GUID 窗体和字符串形式 生成的代码应类似于以下示例。
static class GuidList { public const string guidSimpleProjectPkgString = "96bf4c26-d94e-43bf-a56a-f8500b52bfad"; public const string guidSimpleProjectCmdSetString = "72c23e1d-f389-410a-b5f1-c938303f1391"; public const string guidSimpleProjectFactoryString = "471EC4BB-E47E-4229-A789-D1F5F83B52D4"; public static readonly Guid guidSimpleProjectCmdSet = new Guid(guidSimpleProjectCmdSetString); public static readonly Guid guidSimpleProjectFactory = new Guid(guidSimpleProjectFactoryString); };
保存文件并关闭编辑器。
在 解决方案资源管理器,右击 SimpleProject 项目节点,指向 添加,然后单击 新项目。 将名为 SimpleProjectFactory.cs的 类 。 单击 添加 打开代码编辑器。
使用语句,添加以下 using 语句在其他更高版本。
using System.Runtime.InteropServices;
添加 GUID 属性设置为 SimpleProjectFactory 类。 属性的值是新项目 factory GUID。
[Guid(GuidList.guidSimpleProjectFactoryString)] class SimpleProjectFactory
重新生成解决方案并验证它在编译时不会出错。
现在可以注册项目模板。
注册项目模板
在代码编辑器中打开 SimpleProjectPackage.cs。
添加一 ProvideProjectFactoryAttribute 属性设置为 SimpleProjectPackage 类,如下所示。
[ProvideProjectFactory( typeof(SimpleProjectFactory), "Simple Project", "Simple Project Files (*.myproj);*.myproj", "myproj", "myproj", @"Templates\Projects\SimpleProject", LanguageVsTemplate = "SimpleProject")] [Guid(GuidList.guidSimpleProjectPkgString)] public sealed class SimpleProjectPackage : Package
重新生成解决方案并验证它在编译时不会出错。
重新生成注册项目模板。
ProvideProjectFactory 属性具有以下语法。
public ProvideProjectFactoryAttribute( Type factoryType, string name, string displayProjectFileExtensionsResourceID, string defaultProjectExtension, string possibleProjectExtensions, string projectTemplatesDirectory)
参数 defaultProjectExtension 和 possibleProjectExtensions 设置为项目文件扩展名 (.myproj)。 projectTemplatesDirectory 参数设置为模板的文件夹的相对路径。 在生成期间,此路径将转换为完全生成并添加到注册的注册表项目系统。
检查模板注册
在生成过程中, Visual Studio 创建调用包括必要的信息使用该模板的 SimpleProject.pkgdef 的文件。 这是在 \ bin 的一个隐藏文件 \ 调试项目的文件夹。 打开文件来验证内容类似于:
[$RootKey$\InstalledProducts\SimpleProjectPackage]
@="#110"
"Package"="{f202a1d5-9bf7-424c-a261-d7d2ab364560}"
"PID"="1.0"
"ProductDetails"="#112"
"LogoID"="#400"
[$RootKey$\Packages\{f202a1d5-9bf7-424c-a261-d7d2ab364560}]
@="Company.SimpleProject.SimpleProjectPackage, SimpleProject, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cf624da7ef057ca0"
"InprocServer32"="$WinDir$\SYSTEM32\MSCOREE.DLL"
"Class"="Company.SimpleProject.SimpleProjectPackage"
"CodeBase"="$PackageFolder$\SimpleProject.dll"
[$RootKey$\Menus]
"{f202a1d5-9bf7-424c-a261-d7d2ab364560}"=", Menus.ctmenu, 1"
[$RootKey$\Projects\{471ec4bb-e47e-4229-a789-d1f5f83b52d4}]
@="SimpleProjectFactory"
"DisplayName"="Simple Project"
"DisplayProjectFileExtensions"="Simple Project Files (*.myproj);*.myproj"
"Package"="{f202a1d5-9bf7-424c-a261-d7d2ab364560}"
"DefaultProjectExtension"="myproj"
"PossibleProjectExtensions"="myproj"
"ProjectTemplatesDir"="$PackageFolder$\Templates\Projects\SimpleProject"
"Language(VsTemplate)"="SimpleProject"
[$RootKey$\NewProjectTemplates\TemplateDirs\{f202a1d5-9bf7-424c-a261-d7d2ab364560}\/1]
@="Simple Project"
"SortPriority"=dword:00000064
"TemplatesDir"="$PackageFolder$\Templates\Projects\SimpleProject"
监视文件的 GUID 将有所不同。 它们将匹配 Guids.cs 的 GUID 该项的。
测试模板注册
模板注册通知 Visual Studio 项模板文件夹的位置,以便 Visual Studio 可以显示模板名称和图标。 新项目 对话框。
测试模板注册
在 Visual Studio 中,按 F5 启动 Visual Studio 的实验实例。
在 文件 菜单上,指向 新,然后单击 项目。在 新项目 对话框中,选择 SimpleProject 项类型。
SimpleProject 图标显示在 Visual Studio 安装模板下。
关闭 Visual Studio 的实验实例。
现在具有可以演示注册的项目工厂。 但是,它不能创建项目。 项目包和项目工厂创建和初始化项目。
初始化项目工厂
若要实现项目包和项目工厂之间的连接,请完成以下任务:
对解决方案,请添加指向 Microsoft.VisualStudio.Package 项目结构的源代码文件。 此结构是托管包结构的扩展 (MPF)。 项目结构仅提供作为源代码。
自 Microsoft.VisualStudio.Package.ProjectPackage 派生 SimpleProjectPackage。
使用 Microsoft.VisualStudio.Package.RegisterProjectFactory 方法,使用 Visual Studio 创建一 SimpleProjectFactory 并注册它。
自 Microsoft.VisualStudio.Package.ProjectPackage 派生 SimpleProjectPackage。
传递给 SimpleProjectFactory 构造函数对 SimpleProjectPackage。 此引用可用于后期设置服务提供程序站点缓存。 有关服务的更多信息,请参见 服务。
初始化项目工厂
在 解决方案资源管理器,右击 SimpleProject 节点然后单击 卸载项目。
右击 SimpleProject 节点然后单击 编辑 SimpleProject.csproj。
按照 this link查找托管项目源文件。 复制这些文件到名为的本地文件夹,例如, C: \MyLocalFolder\Project
在 XML 编辑器,请在 RegisterWithCodebase 元素的后面添加以下 ProjectBasePath 元素。 不要破坏包含 ProjectBasePath 元素的行。
<RegisterWithCodebase>true</RegisterWithCodebase> <ProjectBasePath>C:\MyLocalFolder\Project</ProjectBasePath>
在现有 Import 元素的后面添加以下 Import 元素。
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\VSSDK\Microsoft.VsSDK.targets" /> <Import Project="$(ProjectBasePath)\ProjectBase.Files" />
保存项目文件并关闭编辑器。
右击 SimpleProject 节点,然后单击 重新加载项目。解决方案资源管理器 现在应显示 ProjectBase 文件夹。
右击 引用 节点,并添加以下 .NET 引用。
EnvDTE (Visual Studio 安装路径\Common7\IDE\PublicAssemblies\EnvDTE .dll)
Microsoft.VisualStudio.Designer.Interfaces
在 SimpleProjectPackage.cs 文件,请在现有 using 语句后添加以下 using 语句。
using Microsoft.VisualStudio.Package;
从 Microsoft.VisualStudio.Package.ProjectPackage派生 SimpleProjectPackage 类。
public sealed class SimpleProjectPackage : ProjectPackage
将下行添加到 SimpleProjectPackage.Initialize 方法,在 base.Initialize之后。
base.Initialize(); this.RegisterProjectFactory(new SimpleProjectFactory(this));
在 SimpleProjectFactory.cs,请在现有 using 语句后添加以下 using 语句。
using Microsoft.VisualStudio.Package;
从 ProjectFactory派生 SimpleProjectFactory 类。
class SimpleProjectFactory : ProjectFactory
添加以下情况的方法。 SimpleProjectFactory 类。 您将执行在一节中实现此方法。
protected override ProjectNode CreateProject() { return null; }
将以下字段和构造函数添加到 SimpleProjectFactory 类。 此 SimpleProjectPackage 在私有字段引用缓存,以便设置服务提供程序站点。
private SimpleProjectPackage package; public SimpleProjectFactory(SimpleProjectPackage package) : base(package) { this.package = package; }
重新生成解决方案并验证它在编译时不会出错。
测试项目工厂实现
测试项目工厂实现的构造函数是否调用。
测试项目工厂实现
在 SimpleProjectFactory.cs 文件中,将以下行中的断点在 SimpleProjectFactory 构造函数。
this.package = package;
按 F5 启动 Visual Studio 的实验实例。
在**“文件”菜单上指向“新建”,再单击“项目”**。
在 新项目 对话框中,选择 SimpleProject 项类型然后单击 好。在断点上停止执行。
清除断点。
按 SHIFT+F5 停止调试。
扩展项目节点类
现在可以实现 SimpleProjectNode 类,从 ProjectNode 类派生。 ProjectNode 基类处理项目创建以下任务:
复制项模板文件, SimpleProject.myproj,对新项目文件夹。 该副本基于 新项目 对话框中输入的名称重命名。 ProjectGuid 属性值被新的 GUID 替换。
遍历项目模板文件, SimpleProject.myproj 的 MSBuild 元素,并查找 Compile 元素。 对于每个 Compile 目标文件,复制到新项目文件夹中的文件。
派生的 SimpleProjectNode 类处理以下任务:
启用项和文件节点中的图标将创建或选定的 解决方案资源管理器 。
使其他项目模板参数替换指定。
扩展项目节点类
右击 SimpleProject 项目节点,指向 添加,然后单击 新项目。 将名为 SimpleProjectNode.cs的 类 。 单击 添加 打开代码编辑器。
用下面的代码替换现有代码。
using System; using System.Collections.Generic; using Microsoft.VisualStudio.Package; namespace Company.SimpleProject { public class SimpleProjectNode : ProjectNode { private SimpleProjectPackage package; public SimpleProjectNode(SimpleProjectPackage package) { this.package = package; } public override Guid ProjectGuid { get { return GuidList.guidSimpleProjectFactory; } } public override string ProjectType { get { return "SimpleProjectType"; } } public override void AddFileFromTemplate( string source, string target) { this.FileTemplateProcessor.UntokenFile(source, target); this.FileTemplateProcessor.Reset(); } } }
此 SimpleProjectNode 类实现具有这些重写的方法:
ProjectGuid,返回项目 factory GUID。
ProjectType,返回项类型的本地化名称。
AddFileFromTemplate,复制选定内容文件从模板文件夹添加到目标项。 此方法在后面一节中进行进一步执行。
SimpleProjectNode 构造函数,如 SimpleProjectFactory 构造函数, SimpleProjectPackage 在私有字段引用以供将来使用的缓存。
若要连接 SimpleProjectFactory 类添加到 SimpleProjectNode 类,则必须实例化新的 SimpleProjectNode 在 SimpleProjectFactory.CreateProject 方法并将其缓存在私有字段以供将来使用。
若要连接项目工厂类中和节点类
在 SimpleProjectFactory.cs 文件,请在现有 using 语句后添加以下 using 语句。
using IOleServiceProvider = Microsoft.VisualStudio.OLE.Interop.IServiceProvider;
,使用以下代码替换 SimpleProjectFactory.CreateProject 方法。
protected override ProjectNode CreateProject() { SimpleProjectNode project = new SimpleProjectNode(this.package); project.SetSite((IOleServiceProvider) ((IServiceProvider)this.package).GetService( typeof(IOleServiceProvider))); return project; }
重新生成解决方案并验证它在编译时不会出错。
测试项目节点类
测试项目工厂以确定它是否创建项目层次结构。
测试项目节点类
按 F5 启动 Visual Studio 的实验实例。
在**“文件”菜单上指向“新建”,再单击“项目”**。
在 新项目 对话框中,在 Visual Studio 安装模板下,选择 SimpleProject。
选择 创建解决方案的目录,并键入在 名称 框中 MyProject 。
键入解决方案的,例如, D:\一位置。
单击**“确定”**。
Visual Studio 应调用项目工厂创建项目。
关闭 Visual Studio 的实验实例。
添加自定义项目节点图标
在该前面的章节中的项目节点图标是默认图标。 您可以将其更改为自定义图标。
添加自定义项目节点图标
右击 资源 文件夹,指向 添加,然后单击 新项目。 将名为 SimpleProjectNode.bmp 的 位图文件 。 单击 添加 打开位图编辑器。
在 属性 窗口,使位图减至 16 x 16 像素。 使位图特别。
在 属性 窗口中,将位图的 生成操作 到 嵌入资源。
在 SimpleProjectNode.cs,请在现有 using 语句后添加以下 using 语句。
using System.Drawing; using System.Windows.Forms;
添加以下静态字段和构造函数添加到 SimpleProjectNode 类。
private static ImageList imageList; static SimpleProjectNode() { imageList = Utilities.GetImageList( typeof(SimpleProjectNode).Assembly.GetManifestResourceStream( "Company.SimpleProject.Resources.SimpleProjectNode.bmp")); }
将以下特性添加到 SimpleProjectNode 类的开头。
internal static int imageIndex; public override int ImageIndex { get { return imageIndex; } }
,使用以下代码替换实例构造函数。
public SimpleProjectNode(SimpleProjectPackage package) { this.package = package; imageIndex = this.ImageHandler.ImageList.Images.Count; foreach (Image img in imageList.Images) { this.ImageHandler.AddImage(img); } }
在静态构造时, SimpleProjectNode 从程序集清单资源和缓存中检索项目节点位图它在私有字段以供将来使用。 通知图像路径的 Assembly.GetManifestResourceStream 语法。 若要查看程序集嵌入的清单资源名称,请使用 Assembly.GetManifestResourceNames 方法。 当此方法应用于 SimpleProject 程序集时,结果应如下所示:
Company.SimpleProject.Resources.resources
Microsoft.VisualStudio.Package.Project.resources
Company.SimpleProject.VSPackage.resources
Resources.imagelis.bmp
Microsoft.VisualStudio.Package.DontShowAgainDialog.resources
Microsoft.VisualStudio.Package.SecurityWarningDialog.resources
Company.SimpleProject.Resources.SimpleProjectNode.bmp
在实例构造时, ProjectNode 基类加载 Resources.imagelis.bmp,则嵌入从 resources \ imagelis.bmp 的常用 16 x 16 位图。 此位图列表可 SimpleProjectNode 作为 ImageHandler.ImageList。 SimpleProjectNode 追加项节点位图到列表。 项目节点位图的偏移量在图像的列表缓存以备日后用作公共 ImageIndex 属性的值。 Visual Studio 使用此属性来确定要显示的要运行作为项目节点图标。
测试自定义项目节点图标
测试项目工厂以确定它是否创建具有自定义项目节点图标的项目层次结构。
测试自定义项目节点图标
删除 MyProject 解决方案。
按 F5 启动 Visual Studio 的实验实例。
在**“文件”菜单上指向“新建”,再单击“项目”**。
在 新项目 对话框中,在 Visual Studio 安装模板下,选择 SimpleProject。
选择 创建解决方案的目录,并键入在 名称 框中 MyProject 。
键入解决方案的,例如, D:\一位置。
单击**“确定”**。
Visual Studio 应创建项目。 请注意 SimpleProjectNode.bmp 用作项目节点图标。
在代码编辑器中打开 Program.cs。 您应看到类似于以下代码的源代码。
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$ 和 $className$ 没有新值。 可以实现模板下一节中的参数替换。
按 SHIFT+F5 停止调试。
替换模板参数
使用 ProvideProjectFactory 属性,在早期的部分中,您已注册与 Visual Studio 的项目模板。 注册模板文件夹的路径这样可以通过重写和外接 ProjectNode.AddFileFromTemplate 类启用基本模板参数替换。 有关更多信息,请参见 新项目生成:在后台下,第二部分。
若要替代模板参数 $nameSpace$ 和 $className$ 的值在 Program.cs 文件模板的,必须将代码添加到 AddFileFromTemplate 类。
替换模板参数
在 SimpleProjectPackage.cs 文件,请在现有 using 语句后添加以下 using 语句。
using System.IO;
,使用以下代码替换 AddFileFromTemplate 方法。
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(); }
将方法中的断点,在 className 赋值语句之后。
赋值语句确定命名空间和一个新的类名的合理的值。 通过使用这些新值,两个方法调用的 ProjectNode.FileTemplateProcessor.AddReplace 替换相应的模板参数值。
测试模板参数替换
测试项目工厂以确定它是否具有自定义项目节点图标创建项目层次结构。
测试模板参数替换
删除 MyProject 解决方案。
按 F5 启动 Visual Studio 的实验实例。
在**“文件”菜单上指向“新建”,再单击“项目”**。
在 新项目 对话框中,在 Visual Studio 安装模板下,选择 SimpleProject。
选择 创建解决方案的目录,并键入在 名称 框中 MyProject 。
键入解决方案的,例如, D:\一位置。
单击**“确定”**。
执行将在 AddFileFromTemplate 方法中的断点处停止。
检查 nameSpace 和 className 参数的值。
提供nameSpace 元素的值 RootNamespace 。 \Templates\Projects\SimpleProject\SimpleProject .myproj 项目模板文件的。 在这种情况下,值为 “MyRootNamespace”。
className 为该类指定源文件名的值,因此,不带文件扩展名。 在这种情况下,要复制的第一个文件到目标文件夹是 AssemblyInfo.cs;因此, className 的值为 “AssemblyInfo”。
移除断点并按 F5 继续执行。
Visual Studio 应完成创建项目。
在代码编辑器中打开 Program.cs。 您应看到类似于以下代码的源代码。
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(); } } }
通知命名空间现在是 “MyRootNamespace”和类名称现在是 “”。
在 Visual Studio 的实验实例中,按 F5。 新的项目应顺利生成,运行,并显示 “hello VSX!!!”在控制台窗口。
祝贺您! 已经实现了一个基本的托管项目系统。