博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用JScript编译指定目录下所有工程
阅读量:6622 次
发布时间:2019-06-25

本文共 2926 字,大约阅读时间需要 9 分钟。

作者:朱金灿

来源:

 

        我遇到这样一个问题:在一个插件工程目录下的插件工程越来越多,因此通过建一个解决方案然后把新增加的工程逐个添加进解决方案变得越来越繁琐。我设想使用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);     }}

转载于:https://www.cnblogs.com/lanzhi/p/6470514.html

你可能感兴趣的文章
python之路--类与类之间的关系
查看>>
Windows Phone 8 开发环境搭建
查看>>
cisco路由器的基本硬件组成
查看>>
python random模块的详细讲解
查看>>
常用LINUX软件,下载后解压出来ISO文件,直接挂载到LINUX使用即可
查看>>
那些年,阿里巴巴技术男神们写的书!
查看>>
Linux下压缩某个文件夹(文件夹打包)
查看>>
db file sequential read等待事件
查看>>
CISCO路由器上使用 TCP intercept 防止DOS攻击
查看>>
ActiveMQ接收消息+发送消息的简单实例
查看>>
linux 日志清理
查看>>
CentOS系统启动流程
查看>>
Emacs之ditaa与PlantUML与dot绘图环境配置
查看>>
Android UI学习 - Tab的学习和使用
查看>>
Windows Server入门系列之十七 ARP协议原理
查看>>
利用Python脚本管理Windows服务
查看>>
初学flask_sqlalchemy
查看>>
SQLite 3.7.13的加密解密(一)—— 前言
查看>>
修正Strut2 自带上传拦截器功能
查看>>
LYNC安装故障排除分享
查看>>