模板的制作
在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文件。收工。