使用JScript编译指定目录下所有工程

作者:朱金灿

来源: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); 
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

clever101

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值