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


  • 相关阅读:
    关于测试开发及其他——写在离职之前
    牛腩新闻发布系统——初探CSS
    牛腩新闻发布系统——后台前台整合技术
    Android Audio Focus的应用(requestAudioFocus)
    正则表达式详解
    牛腩新闻发布系统——初探JQuery,AJAX
    牛腩新闻发布系统——初探Javascript
    进入中文维基百科的方法
    *args 和**kwargs 的溯源
    mathematica9激活
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6470514.html
Copyright © 2011-2022 走看看