首页 > 代码库 > VS2008 自定义向导的default.js设置(DLL文件)

VS2008 自定义向导的default.js设置(DLL文件)

function OnFinish(selProj, selObj){    try    {        var strProjectPath = wizard.FindSymbol(‘PROJECT_PATH‘);        var strProjectName = wizard.FindSymbol(‘PROJECT_NAME‘);        selProj = CreateCustomProject(strProjectName, strProjectPath);        AddConfig(selProj, strProjectName);        AddFilters(selProj);        var InfFile = CreateCustomInfFile();        AddFilesToCustomProj(selProj, strProjectName, strProjectPath, InfFile);        PchSettings(selProj);        InfFile.Delete();        selProj.Object.Save();    }    catch(e)    {        if (e.description.length != 0)            SetErrorInfo(e);        return e.number    }}function CreateCustomProject(strProjectName, strProjectPath){    try    {        var strProjTemplatePath = wizard.FindSymbol(‘PROJECT_TEMPLATE_PATH‘);        var strProjTemplate = ‘‘;        strProjTemplate = strProjTemplatePath + ‘\\default.vcproj‘;        var Solution = dte.Solution;        var strSolutionName = "";        if (wizard.FindSymbol("CLOSE_SOLUTION"))        {            Solution.Close();            strSolutionName = wizard.FindSymbol("VS_SOLUTION_NAME");            if (strSolutionName.length)            {                var strSolutionPath = strProjectPath.substr(0, strProjectPath.length - strProjectName.length);                Solution.Create(strSolutionPath, strSolutionName);            }        }        var strProjectNameWithExt = ‘‘;        strProjectNameWithExt = strProjectName + ‘.vcproj‘;        var oTarget = wizard.FindSymbol("TARGET");        var prj;        if (wizard.FindSymbol("WIZARD_TYPE") == vsWizardAddSubProject)  // vsWizardAddSubProject        {            var prjItem = oTarget.AddFromTemplate(strProjTemplate, strProjectNameWithExt);            prj = prjItem.SubProject;        }        else        {            prj = oTarget.AddFromTemplate(strProjTemplate, strProjectPath, strProjectNameWithExt);        }        var fxtarget = wizard.FindSymbol("TARGET_FRAMEWORK_VERSION");        if (fxtarget != null && fxtarget != "")        {            fxtarget = fxtarget.split(‘.‘, 2);            if (fxtarget.length == 2)            prj.Object.TargetFrameworkVersion = parseInt(fxtarget[0]) * 0x10000 + parseInt(fxtarget[1])        }        return prj;    }    catch(e)    {        throw e;    }}function AddFilters(proj){    try    {        // 将文件夹添加到项目//        var strSrcFilter = wizard.FindSymbol(‘SOURCE_FILTER‘);//        var group = proj.Object.AddFilter(‘源文件‘);//        group.Filter = strSrcFilter;        proj.Object.AddFilter(‘源文件‘).Filter = ‘cpp;c;def‘;        proj.Object.AddFilter(‘头文件‘).Filter = ‘hpp;h‘;        proj.Object.AddFilter(‘资源文件‘).Filter = ‘ico;rc;bin‘;     }    catch(e)    {        throw e;    }}function AddConfig(proj, strProjectName){    try    {        var config = proj.Object.Configurations(‘Debug‘);        config.CharacterSet = charSetUNICODE;        config.ConfigurationType = typeDynamicLibrary;        config.IntermediateDirectory = ‘$(ConfigurationName)‘;        config.OutputDirectory = ‘$(ConfigurationName)‘;        var CLTool = config.Tools(‘VCCLCompilerTool‘);        // TODO: 添加编译器设置        CLTool.RuntimeLibrary = rtMultiThreadedDebugDLL;                var strDefines = CLTool.PreprocessorDefinitions;        if (strDefines != "") strDefines += ";";        strDefines += GetPlatformDefine(config);        strDefines += "_DEBUG";                strDefines += ";_WINDOWS;_USRDLL;";        var strExports = strProjectName.toString().toUpperCase() + "_EXPORTS";        strDefines += strExports;        CLTool.PreprocessorDefinitions = strDefines;        CLTool.DebugInformationFormat = debugEditAndContinue;                var LinkTool = config.Tools(‘VCLinkerTool‘);        // TODO: 添加链接器设置        LinkTool.ModuleDefinitionFile = strProjectName+".def";        LinkTool.GenerateDebugInformation = true;        LinkTool.SubSystem = subSystemWindows;                config = proj.Object.Configurations(‘Release‘);        config.IntermediateDirectory = ‘$(ConfigurationName)‘;        config.OutputDirectory = ‘$(ConfigurationName)‘;        config.CharacterSet = charSetUNICODE;        config.ConfigurationType = typeDynamicLibrary;        var CLTool = config.Tools(‘VCCLCompilerTool‘);        // TODO: 添加编译器设置        CLTool.RuntimeLibrary = rtMultiThreadedDLL;                var strDefines = CLTool.PreprocessorDefinitions;        if (strDefines != "") strDefines += ";";        strDefines += GetPlatformDefine(config);        strDefines += "NDEBUG"        strDefines += ";_WINDOWS;_USRDLL;";        var strExports = strProjectName.toString().toUpperCase() + "_EXPORTS";        strDefines += strExports;        CLTool.PreprocessorDefinitions = strDefines;        CLTool.DebugInformationFormat = debugEnabled;        var LinkTool = config.Tools(‘VCLinkerTool‘);        // TODO: 添加链接器设置        LinkTool.ModuleDefinitionFile = strProjectName+".def";        LinkTool.GenerateDebugInformation = true;        LinkTool.SubSystem = subSystemWindows;    }    catch(e)    {        throw e;    }}function PchSettings(proj){    // TODO: 指定 pch 设置}function DelFile(fso, strWizTempFile){    try    {        if (fso.FileExists(strWizTempFile))        {            var tmpFile = fso.GetFile(strWizTempFile);            tmpFile.Delete();        }    }    catch(e)    {        throw e;    }}function CreateCustomInfFile(){    try    {        var fso, TemplatesFolder, TemplateFiles, strTemplate;        fso = new ActiveXObject(‘Scripting.FileSystemObject‘);        var TemporaryFolder = 2;        var tfolder = fso.GetSpecialFolder(TemporaryFolder);        var strTempFolder = tfolder.Drive + ‘\\‘ + tfolder.Name;        var strWizTempFile = strTempFolder + "\\" + fso.GetTempName();        var strTemplatePath = wizard.FindSymbol(‘TEMPLATES_PATH‘);        var strInfFile = strTemplatePath + ‘\\Templates.inf‘;        wizard.RenderTemplate(strInfFile, strWizTempFile);        var WizTempFile = fso.GetFile(strWizTempFile);        return WizTempFile;    }    catch(e)    {        throw e;    }}function GetTargetName(strName, strProjectName){    try    {        // TODO: 基于模板文件名设置呈现文件的名称        var strTarget = strName;        if (strName == ‘readme.txt‘)            strTarget = ‘ReadMe.txt‘;        if (strName == ‘MoonDriver.cpp‘)            strTarget =strProjectName+ ‘.cpp‘;        if (strName == ‘MoonDriver.def‘)            strTarget =strProjectName+ ‘.def‘;        if (strName == ‘MoonDriver.h‘)            strTarget =strProjectName+ ‘.h‘;        return strTarget;    }    catch(e)    {        throw e;    }}function AddFilesToCustomProj(proj, strProjectName, strProjectPath, InfFile){    try    {        var projItems = proj.ProjectItems        var strTemplatePath = wizard.FindSymbol(‘TEMPLATES_PATH‘);        var strTpl = ‘‘;        var strName = ‘‘;        var strTextStream = InfFile.OpenAsTextStream(1, -2);        while (!strTextStream.AtEndOfStream)        {            strTpl = strTextStream.ReadLine();            if (strTpl != ‘‘)            {                strName = strTpl;                var strTarget = GetTargetName(strName, strProjectName);                var strTemplate = strTemplatePath + ‘\\‘ + strTpl;                var strFile = strProjectPath + ‘\\‘ + strTarget;                var bCopyOnly = false;  //“true”仅将文件从 strTemplate 复制到 strTarget,而不对项目进行呈现/添加                var strExt = strName.substr(strName.lastIndexOf("."));                if(strExt==".bmp" || strExt==".ico" || strExt==".gif" || strExt==".rtf" || strExt==".css"|| strExt==".lib")                    bCopyOnly = true;                wizard.RenderTemplate(strTemplate, strFile, bCopyOnly);                proj.Object.AddFile(strFile);            }        }        strTextStream.Close();    }    catch(e)    {        throw e;    }}