模板的制作
在vs2010中制作模板文件非常简单,直接点击菜单中的文件à保存为模板,就可以另存为工程模板或是项目模板了。保存选项里可以选择模板的图标。
做好的模板需要放到下面这两个目录中:
C:\Documents and Settings\wz\My Documents\Visual Studio 2010\Templates\ProjectTemplates
C:\Documents and Settings\wz\My Documents\Visual Studio 2010\Templates\ItemTemplates
然后新建一个工程,你就发现这些模板已经可以用了。
模板中参数使用注意事项:
1,对于工程模板
由于牵涉到程序集的一些信息,比如公司信息,guid等,需要用模板变量来替换,不然每次生成的工程都一样了。AssemblyInfo.cs文件需要做如下的修改:
[assembly: AssemblyTitle("$safeprojectname$")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("$registeredorganization$")] [assembly: AssemblyProduct("$safeprojectname$")] [assembly: AssemblyCopyright("Copyright (C) $registeredorganization$ $year$")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: Guid("$guid1$")]
项目中的类使用的命名空间要用$safeprojectname$:
namespace $safeprojectname$ { }
2,对于项目模板
这里已经罗列出了所有的保留模板参数,这些参数对于工程模板是一样的,唯一有点区别的是:$rootnamespace$仅在项目模板中有效,而$projectname$在工程模板才有效的。
项目模板中的namespace要用$rootnamespace$
namespace $rootnamespace$ { /// <summary> /// clrversion:$clrversion$ /// Guid:$guid1$ /// itemname:$itemname$ /// machinename:$machinename$ /// projectname:$projectname$ /// registeredorganization:$registeredorganization$ /// safeprojectname:$safeprojectname$ /// time:$time$ /// userdomain:$userdomain$ /// username:$username$ /// webnamespace:$webnamespace$ /// year:$year$ /// </summary> public class $safeitemname$ : BaseLibrary { } }
带safe开头的几个变量去掉了不安全字符和空格。
添加一个项目后的效果:
namespace CMM.UserKanriApi.ClientTier.BusinessLogic { /// <summary> /// clrversion:4.0.30319.269 /// Guid: 5c7655a2-5413-4031-98fb-b52c8e1a52a0 /// itemname:GetSemmeiBusinessLogic /// machinename:ss-pc /// projectname:$projectname$ /// registeredorganization:sk /// safeprojectname:$safeprojectname$ /// time:2012/09/11 14:51:28 /// userdomain: ss-pc /// username:wz /// webnamespace:$webnamespace$ /// year:2012 /// </summary> public class GetSemmeiBusinessLogic : BaseLibrary { } }
用上面这些保留参数基本上就可以满足我们的要求了。如果需要一些更复杂的配置,可以修模板的MyTemplate.vstemplate文件。如添加自定义参数(摘自MSDN):
<TemplateContent> ... <CustomParameters> <CustomParameter Name="$MyParameter1$" Value="MyValue2"/> <CustomParameter Name="$MyParameter2$" Value="MyValue2"/> </CustomParameters> </TemplateContent>
在模板的一个或多个代码文件中使用该参数。 例如:
string Value1 = "$MyParameter1" string Value2 = "$MyParameter2"
3,对于webservice类型的模板,要再次编辑模板文件。
webservice类型的文件包含一个xxx.asmx,这个文件默认是不进行参数替换的,造成每次加入一个模板文件,修改了类名,但是这个文件里对应的类名没有随着变化。造成程序错误,对应方法可以手动修改这个文件,但最好的方式是建模板文件的时候从新修改一下模板,就可以解决这个问题,具体修改方法如下:
打开MyTemplate.vstemplate这个文件,
1,对于xxx.asmx文件,ReplaceParameters改为true,加入OpenInEditor="false"
2,对于xxx.asmx.cs文件,加入OpenInEditor="true"。
<TemplateContent> <References /> <ProjectItem OpenInEditor="false" SubType="" TargetFileName="$fileinputname$.asmx" ReplaceParameters="true">WebService_t.asmx</ProjectItem> <ProjectItem OpenInEditor="true" SubType="Code" TargetFileName="$fileinputname$.asmx.cs" ReplaceParameters="true">WebService_t.asmx.cs</ProjectItem> </TemplateContent>
3,修改xxx.asmx文件内容为:
<%@ WebService Language="C#" CodeBehind="$fileinputname$.asmx.cs" Class="$rootnamespace$.$safeitemname$" %>
4,重新打包上诉的几个文件成zip文件。收工。