zoukankan      html  css  js  c++  java
  • 使用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); 
        }
    }
    
    


  • 相关阅读:
    tuple 元组及字典dict
    day 49 css属性补充浮动 属性定位 抽屉作业
    day48 选择器(基本、层级 、属性) css属性
    day47 列表 表单 css初识
    day 46 http和html
    day 45索引
    day 44 练习题讲解 多表查询
    day 40 多表查询 子查询
    day39 表之间的关联关系、 补充 表操作总结 where 、group by、
    day38 数据类型 约束条件
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6470514.html
Copyright © 2011-2022 走看看