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;
}
}

VS2008 自定义向导的default.js设置(DLL文件)的更多相关文章

  1. node.js 设置静态文件托管

    1.在app.js文件中设置静态文件托管 /*应用程序入口文件*/ /*加载express模块*/ var express = require('express'); /*加载模板处理模块*/ var ...

  2. JNI中使用cl命令生成DLL文件

    问题描述:     在使用JNI调用DLL时,首先需要生成DLL文件 问题解决:     (1)现在使用VS2008的cl.exe程序,生成DLL文件 (1.1)cl.exe环境搭建 注:   cl. ...

  3. vs2008设置dll、lib库的输出路径

    vs2008中,有些项目上的功能是要生产库文件给其他项目调用的,以下是一些设置库文件(x.dll和x.lib)输出路径的方法. 设置x.dll 输出路径方法是在右键项目的"属性"- ...

  4. VS2010 自定义向导

    最近在学OpenGL,不想使用OpenGL的GLUT工具,自己写了一个初始化OpenGL的类,并在win32中使用,每次都要新建一个win32项目,然后将OpenGL初始化类拷贝到项目,然后进行各种初 ...

  5. 安装Ubuntu时,遇到自定义交换空间swap大小设置问题

    【整理】Ubuntu自定义分区设置 在安装Ubuntu时,如果使用的是一个新硬盘那么安装向导会建议你使用整个硬盘,如果硬盘上已经有数据了,向导会建议使用剩余的空间。不管怎样,是由向导自动划分的分区。 ...

  6. 运用JS设置cookie、读取cookie、删除cookie

    JavaScript是运行在客户端的脚本,因此一般是不能够设置Session的,因为Session是运行在服务器端的.而cookie是运行在客户端的,所以可以用JS来设置cookie. 假设有这样一种 ...

  7. JS设置cookie、读取cookie、删除cookie

    JS设置cookie.读取cookie.删除cookie       JS设置cookie,注意一定要path=/ ,根目录,不然其他目录可能查询不到..默认是本目录. document.cookie ...

  8. JS设置cookie

    cookie 与 session 是网页开发中常用的信息存储方式.Cookie是在客户端开辟的一块可存储用户信息的地方:Session是在服务器内存中开辟的一块存储用户信息的地方. JavaScrip ...

  9. js调DLL类库中的方法实现(非com组件形式)

    1.首先,创建一个Web空项目 2.添加一个html或aspx页面 3.页面代码如所示: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tr ...

随机推荐

  1. C#操作注册表——读、写、删除、判断等基本操作

    一.引入命名空间: using Microsoft.Win32; 二.创建注册表项:CreateSubKey(name)方法 添加SubKey时候首先要打开一个表项,并设置参数为true,才能成功创建 ...

  2. c# 异步调用简单例子(转载)

    首先来看一个简单的例子: 小明在烧水,等水烧开以后,将开水灌入热水瓶,然后开始整理家务 小文在烧水,在烧水的过程中整理家务,等水烧开以后,放下手中的家务活,将开水灌入热水瓶,然后继续整理家务 这也是日 ...

  3. [Linked List]Insertion Sort List

    Total Accepted: 59422 Total Submissions: 213019 Difficulty: Medium Sort a linked list using insertio ...

  4. 如何用EXCEL表计算今天是本年的第几周?

    单元格内输入如下代码计算出来的数字即是当日在本年度的第几周,如下: =INT((TODAY()-DATE(YEAR(TODAY()),1,1)-WEEKDAY(DATE(YEAR(TODAY()),1 ...

  5. USB OTG介绍(转载)

    1. 概要 OTG设备使用插头中的ID引脚来区分A/B Device,ID接地被称作为A-Device,为连接时候的USB Host,A-Device始终为总线提供电力,ID悬空被称作为B-Devic ...

  6. hdu 2222 Keywords_ac自动机模板

    题意:给你n个单词,再给你一串字符,求在字符中有多少个单词出现过 #include <iostream> #include<cstdio> #include<cstrin ...

  7. 【每日一MOS】-RAC and Sequences (853652.1)

    序列有四种组合: a. CACHE + NOORDER b. CACHE + ORDER c. NOCACHE + NOORDER d. NOCACHE + ORDER 即使在单例配置下,当有大量的s ...

  8. linux下如何产生core,调试core

    linux下如何产生core,调试core 摘自:http://blog.163.com/redhumor@126/blog/static/19554784201131791239753/ 在程序不寻 ...

  9. ExecuteReader(),ExecuteNonQuery(),ExecuteScalar(),ExecuteXmlReader()之间的区别

    本文来自:http://www.cnblogs.com/zhouxiaxue/archive/2006/05/12/398266.html http://www.cnblogs.com/yaoxc/a ...

  10. jquery promot

    http://www.itivy.com/jquery/archive/2011/10/15/jquery-impromptu-usage.html