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