一基础知识
C:\Program Files\Microsoft Visual Studio NET \VC#\DesignerTemplates\
其下的NewWebFormCodecs文件是默认的新AspNet页面的后台代码文件;
C:\Program Files\Microsoft Visual Studio NET \VC#\VC#Wizards\CSharpAddWebFormWiz
其下的\Scripts\\defaultjs文件定义了基本的针对*aspx页面的脚本操作;
其下的\Templates\\WebFormaspx文件定义新AspNet页面的*aspx文件;
其下的\Templates\\Templatesinf文件指向了WebFormaspx文件;
C:\Program Files\Microsoft Visual Studio NET \VC#\CSharpProjectItems\WebProjectItems\UI
其下的uivsdir文件定义了模板向导的基本信息;
二制作过程
建立VC#文件夹其内部结构如下:
VC#\CSharpProjectItems \WebProjectItems\Itabby界面模板\
ItabbyAddCommonFormWizvsz内容如下
VSWIZARD
Wizard=VsWizardVsWizardEngine
Param=WIZARD_NAME = ItabbyAddCommonFormWiz
Param=WIZARD_UI = FALSE
Param=PROJECT_TYPE = CSPROJ
uivsdir内容如下
ItabbyAddCommonFormWizvsz|{FAEECFdBFBCFEFBC}|Itabby通用模板||#|{FAEECFdBFBCFEFBC}|||ItabbyCommonFormaspx
VC#\DesignerTemplates\\
NewWebFormCodecs修改微软NewWebFormCodecs而成
VC#\VC#Wizards\ItabbyAddCommonFormWiz\Scripts\\
defaultjs修改微软defaultjs而成
VC#\VC#Wizards\ItabbyAddCommonFormWiz\Templates\\
ItabbyWebFormaspx 修改微软WebFormaspx而成
Templatesinf内容如下
ItabbyWebFormaspx
三分析说明
CSharpProjectItems
webProjectItems
Itabby界面模板
ItabbyAddCommonFormWizvsz
内容:
VSWIZARD
Wizard=VsWizardVsWizardEngine
Param=WIZARD_NAME = ItabbyAddCommonFormWiz
Param=WIZARD_UI = FALSE
Param=PROJECT_TYPE = CSPROJ
说明:上述代码修改自微软:\CSharpProjectItems\WCSharpAddWebFormWizvsz中:
VSWIZARD
Wizard=VsWizardVsWizardEngine
Param=WIZARD_NAME = CSharpAddWebFormWiz
Param=WIZARD_UI = FALSE
Param=PROJECT_TYPE = CSPROJ
uivsdir
内容:
ItabbyAddCommonFormWizvsz|{FAEECFdBFBCFEFBC}|Itabby通用模板||#|{FAEECFdBFBCFEFBC}|||ItabbyCommonFormaspx
说明:
上述代码修改自微软:\CSharpProjectItems\WebProjectItems\UI\uivsdir中:
\\CSharpAddWebFormWizvsz|{FAEECFdBFBCFEFBC}|#||#|{FAEECFdBFBCFEFBC}|||WebFormaspx
DesignerTemplates
NewWebFormCodecs
内容:
$NAMESPACE$ //微软自动处理
$CLASSNAME$ //微软自动处理
VC#Wizards
ItabbyAddCommonFormWiz
Scripts
defaultjs
内容:
// (c) Microsoft Corporation
function AddDefaultServerScriptToWizard(selProj)
{
wizardAddSymbol(DEFAULT_SERVER_SCRIPT JavaScript);
}
function AddDefaultClientScriptToWizard(selProj)
{
var prjScriptLang = selProjProperties(DefaultClientScript)Value;
// = JScript
// = VBScript
if(prjScriptLang == )
{
wizardAddSymbol(DEFAULT_CLIENT_SCRIPT JavaScript);
}
else
{
wizardAddSymbol(DEFAULT_CLIENT_SCRIPT VBScript);
}
}
function AddDefaultDefaultHTMLPageLayoutToWizard(selProj)
{
var prjPageLayout = selProjProperties(DefaultHTMLPageLayout)Value;
// = FlowLayout
// = GridLayout
if(prjPageLayout == )
{
wizardAddSymbol(DEFAULT_HTML_LAYOUT FlowLayout);
}
else
{
wizardAddSymbol(DEFAULT_HTML_LAYOUT GridLayout);
}
}
function OnFinish(selProj selObj)
{
var oldSuppressUIValue = true;
try
{
oldSuppressUIValue = dteSuppressUI;
var strProjectName = wizardFindSymbol(PROJECT_NAME);
var strSafeProjectName = CreateSafeName(strProjectName);
wizardAddSymbol(SAFE_PROJECT_NAME strSafeProjectName);
SetTargetFullPath(selObj);
var strProjectPath= wizardFindSymbol(TARGET_FULLPATH);
var strTemplatePath= wizardFindSymbol(TEMPLATES_PATH);
//用户自定义代码开始
var strPaths = strProjectPathsplit(\\);
var curResPath = ;
var bFindModules = false;
for(index = strPathslength;index>=;index)
{
if(strPaths[index]==modules)
{
bFindModules = true;
break;
}
curResPath += /;
}
if(bFindModules==false)
curResPath = ;
var curJsPath = curResPath + Jscript/commonjs;
var curCssPath = curResPath + style/commoncss;
var curImgPath = curResPath + images
var curctlPath = curResPath + Jscript/controlpaneljs
wizardAddSymbol(ITABBY_JS_SRC curJsPath);
wizardAddSymbol(ITABBY_CSS_SRC curCssPath);
wizardAddSymbol(ITABBY_IMG_SRC curImgPath);
wizardAddSymbol(ITABBY_CTL_SRC curctlPath);
//用户自定义代码结束
var strTpl = ;
var strName = ;
var InfFile = CreateInfFile();
// add the default project props for the aspx file before we
// render it
AddDefaultServerScriptToWizard(selProj);
AddDefaultClientScriptToWizard(selProj);
AddDefaultTargetSchemaToWizard(selProj);
AddDefaultDefaultHTMLPageLayoutToWizard(selProj);
// render our file
AddFilesToCSharpProject(selObj strProjectName strProjectPath InfFile true);
AddReferencesForWebForm(selProj);
}
catch(e)
{
if( edescriptionlength > )
SetErrorInfo(e);
return enumber;
}
finally
{
dteSuppressUI = oldSuppressUIValue;
if( InfFile )
InfFileDelete();
}
}
function SetFileProperties(oFileItem strFileName)
{
if(strFileName == WebFormaspx)
{
oFileItemProperties(SubType)Value = Form;
}
}
说明:上述修改自微软:\VC#\VC#Wizards\CSharpAddWebFormWiz\Scripts\\defaultjs
Templates
ItabbyWebFormaspx
内容:
<%@ Page language=c# Codebehind=$FILENAME$cs AutoEventWireup=false Inherits=$INHERITS$ %>//微软自动处理
<!DOCTYPE HTML PUBLIC //WC//DTD HTML Transitional//EN >
<html>
<head>
<title>平纹科技</title>
<meta content=Microsoft Visual Studio NET name=GENERATOR>
<meta content=C# name=CODE_LANGUAGE>
<meta content=JavaScript name=vs_defaultClientScript>
<meta content= name=vs_targetSchema>
<meta content=平纹公司科技服务生活信息创造价值 name=keywords>
<META httpequiv=ContentType content=text/html; charset=gb>
<meta name=vs_defaultClientScript content=[!output DEFAULT_CLIENT_SCRIPT]> //微软自动处理
<meta name=vs_targetSchema content=[!output DEFAULT_TARGET_SCHEMA]> //微软自动处理
<LINK [!output _fcksavedurl=[!output ITABBY_CSS_SRC] type=text/css rel=stylesheet> //用户自定义变量
<script src=[!output ITABBY_JS_SRC]></script> //用户自定义变量
</head>
Templatesinf
内容:
ItabbyWebFormaspx
说明上述代码修改自微软:VC#Wizards\CSharpAddWebFormWiz\Templates\\Templatesinf:
WebFormaspx
四模板内容
模板的定制主要以修改\VC#\VC#Wizards\ItabbyAddCommonFormWiz\Templates\ItabbyWebFormaspx和修改VC#\DesignerTemplates\\NewWebFormCodecs为主实现不同的界面风格和代码逻辑
\VC#\VC#Wizards\ItabbyAddCommonFormWiz\Scripts\\defaultjs主要实现与aspx页面的交互如相对路径的制定自动替换等操作;
\VC#\CSharpProjectItems\WebProjectItems\Itabby界面模板\ItabbyAddCommonFormWizvsz和VC#\CSharpProjectItems\WebProjectItems\Itabby界面模板\uivsdir主要实现了与集成开发环境的向导交互