作者:朱金灿

来源:http://blog.csdn.net/clever101

我遇到这样一个问题:在一个插件工程目录下的插件工程越来越多,因此通过建一个解决方案然后把新增加的工程逐个添加进解决方案变得越来越繁琐。我设想使用Jscript编程通过创建一个空的解决方案,然后遍历该文件夹下的vc工程,把该文件夹的vc工程都加到这个空的解决方案,然后编译这个解决方案。今天鼓捣了,成功了。开始以为只需新建一个空解决方案,然后把所有工程加到这个解决方案就行,后来发现不行,解决方案文件无法生成,想了折中的办法,为一个工程创建一个解决方案。废话不说了,贴上代码:

main();

function main()
{
try
{
var WSShell = WScript.CreateObject("WScript.Shell");
var num = WScript.ScriptFullName.lastIndexOf("\\");
// 获取当前路径
var strCurPath = WScript.ScriptFullName.substr(0,num);
var FileSys = WScript.CreateObject("Scripting.FileSystemObject");
// 判断当前文件夹是否存在
if (FileSys.FolderExists(strCurPath))
{
// 获取vs2008d的dte对象
var DTE = new ActiveXObject("VisualStudio.DTE.9.0");
DTE.MainWindow.Visible = false; var strPluginFolder = strCurPath + "\\Plugin";
// 判断临时文件夹是否存在,若不存在就创建。临时文件夹用于存放创建
var strTempPath = strCurPath + "\\temp";
if(!FileSys.FolderExists(strTempPath))
{
FileSys.CreateFolder(strTempPath);
} var PluginFolder = FileSys.GetFolder(strPluginFolder);
// 获取所有子文件夹,遍历所有的子文件夹
var PlugSet = new Enumerator(PluginFolder.SubFolders);
for (var i = 0 ; !PlugSet.atEnd(); PlugSet.moveNext(),i++)
{ var strSlnIndex = i;
var strProjectFolder = strPluginFolder + "\\";
strProjectFolder = strProjectFolder + PlugSet.item().Name;
var ProjectFolder = FileSys.GetFolder(strProjectFolder);
// 获取所有的文件
var fenum = new Enumerator(ProjectFolder.Files);
for (var j = 0 ; !fenum.atEnd(); fenum.moveNext(),j++)
{
var strPrjFileName = fenum.item().Name;
var strSuff = FileSys.GetExtensionName(strPrjFileName);
// 假如文件是vc工程文件,就执行编译
if((strSuff=="vcproj"))
{
var sln = DTE.Solution;
sln.Create(strCurPath,strSlnIndex);
var strProjectFolder = strProjectFolder + "\\";
strPrjFileName = strProjectFolder + strPrjFileName;
sln.AddFromFile(strPrjFileName);
strSlnIndex = strSlnIndex + ".sln";
var strSolution = strTempPath+"\\";
strSolution = strSolution+strSlnIndex
sln.SaveAs(strSolution);
var solbuild = sln.SolutionBuild;
// 编译release版本
solbuild.SolutionConfigurations.Item("Release").Activate()
solbuild.Build(true);
// 编译debug版本
solbuild.SolutionConfigurations.Item("Debug").Activate()
solbuild.Build(true);
break;
}
}
}
}
else
{
WScript.Echo("the current path isnot exist!");
return;
}
}
catch(e)
{
WScript.Echo(e.description);
}
}

使用JScript编译指定目录下所有工程的更多相关文章

  1. [No000073]C#直接删除指定目录下的所有文件及文件夹(保留目录)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  2. 一个获取指定目录下一定格式的文件名称和文件修改时间并保存为文件的python脚本

    摘自:http://blog.csdn.net/forandever/article/details/5711319 一个获取指定目录下一定格式的文件名称和文件修改时间并保存为文件的python脚本 ...

  3. python中获取指定目录下所有文件名列表的程序

    http://blog.csdn.net/rumswell/article/details/9818001 # -*- coding: utf-8 -*-#~ #------------------- ...

  4. linux复制指定目录下的全部文件到另一个目录中

    linux复制指定目录下的全部文件到另一个目录中复制指定目录下的全部文件到另一个目录中文件及目录的复制是经常要用到的.linux下进行复制的命令为cp.假设复制源目录 为 dir1 ,目标目录为dir ...

  5. C# 获取指定目录下所有文件信息、移动目录、拷贝目录

    /// <summary> /// 返回指定目录下的所有文件信息 /// </summary> /// <param name="strDirectory&qu ...

  6. PHP 获取指定目录下所有文件(包含子目录)

    PHP 获取指定目录下所有文件(包含子目录) //glob — 寻找与模式匹配的文件路径 $filter_dir = array('CVS', 'templates_c', 'log', 'img', ...

  7. C++查找指定目录下所以指定类型的文件

    /*************************************************************** 函数名称:FindFile 查找指定目录下指定文件 输入:fileNa ...

  8. Java 读取指定目录下的文件名和目录名

    需求:读取指定目录下的文件名和目录名 实现如下: package com.test.common.util; import java.io.File; public class ReadFile { ...

  9. iOS案例:读取指定目录下的文件列表

    // // main.m // 读取指定目录下的文件列表 // // Created by Apple on 15/11/24. // Copyright © 2015年 Apple. All rig ...

随机推荐

  1. js的继承操作案例

    js的继承操作案例 一.总结 1.要案例要求,内心中想出操作要点 二.js的继承操作案例 案例 练习1:具有默认值的构造函数 实例描述: 有时候在创建对象时候,我们希望某些属性具有默认值 案例思路: ...

  2. 如何获取AppStore软件安装包的路径

    本帖最后由 chinald 于 2015-10-16 13:59 编辑 前言:本文介绍在Mac下如何找到AppStore下载的安装包路径,以及如何提取出来供以后使用,希望对大家有所帮助(前提:想要提取 ...

  3. LDD3之并发和竞态-completion(完毕量)的学习和验证

    LDD3之并发和竞态-completion(完毕量)的学习和验证 首先说下測试环境: Linux2.6.32.2 Mini2440开发板 一開始难以理解书上的书面语言,这里<linux中同步样例 ...

  4. ZOJ 1494 Climbing Worm 数学水题

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=494 题目大意: 一只蜗牛要从爬上n英寸高的地方,他速度为u每分钟,他爬完u需要 ...

  5. 12.1、USB驱动——描述符、URB、管道

    大家常说,一个设备通常有多个配置,配置通常有多个接口,接口通常有多个端点.接口代表逻辑上的设备,比如声卡分为 录音和播放.访问设备时,访问的是某个接口(逻辑设备).除了端点0之外,每个端点只支持一个传 ...

  6. [Node.js] Testing ES6 Promises in Node.js using Mocha and Chai

    Writing great ES6 style Promises for Node.js is only half the battle. Your great modules must includ ...

  7. javascrit开发的基本代码结构的

    今天看到群里一个demo,简单看了一下. 然后自己就写了一个通用的javascrit开发的基本代码结构的js文件. 代码例如以下: (function($,win){ //定义全局变量对象 var o ...

  8. 2. pushd . :将当前文件夹压入栈,使用popd能够回到该文件夹。

    1.man -t  ls | ps2pdf -> ls.pdf生成pdf格式的ls帮助文件. 2. pushd . :将当前文件夹压入栈,使用popd能够回到该文件夹. 3.find -type ...

  9. php 小程序获取渠道二维码 保存

    function ppost($url,$arr){ $post_data = json_encode($arr); $url=$url; $ch = curl_init(); curl_setopt ...

  10. Error while trying to retrieve text for error ORA-12705

    今天, 按照以前的学习笔记, 配置ProC 但是, 却发生了如题的错误. Google一下, 都是NLS_LANG环境变量设置有问题, 我核一下没有问题. 问题在哪? 原来是ORACLE_HOME环境 ...