VS2010实战:创建并共享项目/项模板

来源:互联网 发布:孙策玉玺换兵马 知乎 编辑:程序博客网 时间:2024/05/01 17:12


转自:http://tech.it168.com/a2010/0625/1070/000001070308_all.shtml

VS2010实战:创建并共享项目/项模板

2010年06月28日00:05 it168网站原创  作者:IT168 黄永兵  编辑:胡铭娅 评论:0
本文Tag: Visual Studio 微软

  【IT168专稿】在Visual Studio 2010中,可以直接在新建项目对话框中查找和使用共享的项目和项模板,要上传到Visual Studio Gallery实现联机共享或是直接在组织内与其他人共享模板,必须将共享代码放在VSIX文件中,本文将介绍两种创建包含共享代码模板VSIX文件的方法(一个快速简单,另一个则更复杂)。

  快速,(几乎全部)自动化方法:导出模板为VSIX

  Visual Studio Gallery 网站上提供了新的“导出模板为VSIX向导”工具,你可以直接去网站下载,也可以通过扩展管理器对话框下载,安装好后,你会发现在Visual Studio 2010的“文件”菜单下多了一项“导出模板为VSIX…”,点击它打开向导对话框,如图1所示,你可以在向导中对模板和VSIX文件做一些配置,通过它你可以将现有项目转换成一个包含模板的VSIX文件。

导出模板为VSIX

  图 1 导出模板为VSIX向导对话框

  漫长的,(几乎全部)手工方法:模板项目+VSIX项目

  虽然快速方法是与他人共享项目模板的理想方法,但它不适合所有情况,例如,你可能想结合VSPackage或编辑器扩展创建一系列模板,但如果你经常要修改这些模板怎么办?如果你想在版本控制系统中保留模板的源代码该怎么办?如果你想自定义模板或VSIX容器,不使用导出模板为VSIX向导产生的结果时该怎么办?

  这时我们就需要请出Visual Studio SDK来帮忙了,在“新建项目”对话框中,展开“Visual C#”或“Visual Basic”节点,再选择“Extensibility(扩展)”,你会看到两个新的模板(一个项目模板,一个项模板),如图2所示,下面我们就使用Visual Studio SDK中新的模板创建和打包一个C#项目模板。

  图 2 扩展分类下的两个模板


  攻略:使用Visual Studio SDK打包一个模板

  首先,我们创建一个项目模板项目,为单个模板生成一个zip文件,然后再创建一个VSIX项目,包含并部署签名生成的项目模板。

  1、打开“新建项目”对话框,从“扩展”类别中选择创建一个新的“C#项目模板”,取名为“MyTemplate”,在生成这个项目时有几件事需要注意:

  • .vstemplate文件有一个VSTemplate构建行为(Build Action),而.cs,.csproj和.ico文件有一个None构建行为,因为这个项目是为了构建一个.zip文件,而不是.dll或.exe文件,因此代码文件不会被编译。

  • 如果你在文本编辑器中打开Class1.cs或ProjectTemplate.csproj,你将会看到有多个VSTemplate参数($safeprojectname$,$guid1$等),当项目模板实例化时被替换。

  • zip包中包括的文件在构建时通过读取.vstemplate文件发现,这个文件中没有具体指定的任何文件都不会包括在模板zip文件中。

  2、构建项目。注意创建的zip文件位于项目输出文件夹的一个子目录中(在我们的例子中,模板构建到ProjectTemplates\CSharp\1033\MyTemplate.zip),输出文件夹的子目录是在构建时由几个因素共同确定的:

  • .vstemplate文件根节点的“类型”属性,项目模板在“ProjectTemplates”下,项模板在“ItemTemplates”下。

  • 路径中的“语言”部分(在我们的例子是CSharp)是由.vstemplate文件的节点确定的。

  • 下一个子路径部分是可选的(默认为空),即OutputSubPath,它决定了新建项目对话框中放置模板的位置(如Windows,Web Silverlight),因为我们构建模板的目标是Windows,因此我们需要在MyTemplate.csproj文件中指定这个额外的元数据块,在项目节点上点击右键,选择“卸载项目”,然后再次在项目节点上点击右键,选择“编辑MyTemplate.csproj”编辑这个文件,增加下面两行代码。

<VSTemplate Include="MyTemplate.vstemplate">     
<OutputSubPath>Windows</OutputSubPath></VSTemplate>

 

  • 路径中的1033是模板的LCID,英文环境下的LCID就是1033,这也是默认值,如果你想修改LCID(如日文对应的1041),你必须对MyTemplate.csproj文件作如下修改:

<VSTemplate Include="MyTemplate.vstemplate">  
<OutputSubPath>Windows</OutputSubPath><Culture>1041</Culture></VSTemplate>

  • 最后,zip文件的名字使用的是新建项目对话框中指定的项目名字。

  3、我们刚刚创建的项目仅仅构建了一个zip文件,并未构建VSIX文件,也没有构建在Visual Studio中调试的模板,要做到这一点,需要在你的解决方案中增加一个新的VSIX项目,在我们的例子中,新增加的VSIX项目名叫“MyTemplateSetup”(你也可以在“新建项目”对话框的“扩展”节点下看到“VSIX项目” 模板)。

  4、VSIX项目创建好后,你应该看到编辑器打开了source.extension.vsix文件,点击“添加内容”按钮,指定前面1-2步创建的模板文件,如图3所示。

使用Visual Studio SDK打包一个模板

  图 3 添加项目模板

  • 对于内容类型,选择“项目模板”。

  • 对于源,选择“项目”,然后选择“MyTemplate”项目。

  • 点击确定。

  5、保存并关闭VSIX编辑器。

  6、在MyTemplateSetup项目上点击右键,选择“设为启动项目”,在Visual Studio Experimental实例中调式你的模板。

  7、按F5开始调试(或按CTRL+F5实现无调试器启动)。

  8、在Visual Studio中显示新建项目对话框,检查你的模板是否出现在“Visual C# \ Windows”节点下,如果存在则表明你成功创建了项目模板,并实现了共享。

  如果你要构建一套模板集,你可以重复上面的步骤,将所有模板包括在一个VSIX文件中(跳过步骤3)。这个方法虽然比“导出模板为VSIX向导”要复杂得多,但它除了沿用VSIX格式构建和交付模板外,还取得了模板源文件的控制权,无疑更加灵活。此外,本文介绍的两个方法同样适用于创建和共享项模板。


原创粉丝点击