感悟自动化编译实现
Author:zfive5(zhaozidong)
Email :zfive5@yahoo.com.cn
vc6也有一个类似.net dte的接口组件(Automation Object Model),周六研究了一个上午,结果还是放弃了用Automation Object Model来实现自动编译的尝试,不是它实现不了这个功能,而是用不好的话,进程列表就一堆msdev.exe (其实vc7.0下也有这个问题)! 而更多的原因采用命令行的话的确编程实现简洁,在加上基本上能做到多种编译器下通用!
vb6.0下使用Automation Object Model的简单代码:
Private Sub ZFIVE5_Click()
Dim oVc6 As New DSSharedObjects.Application
oVc6.Visible = False
oVc6.Documents.Open ("C:/test/VC61/VC61.dsw")
oVc6.Build oVc6.Projects("VC61").Configurations("VC61 - Win32 Release")
oVc6.Quit
Set oVc6 = Nothing
End Sub
VC6命令行下的使用举例:
C:/>msdev C:/test/VC61/VC61.dsp /MAKE "VC61 - win32 Release" /rebuild
Cmd执行结果如图:
<shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock aspectratio="t" v:ext="edit"></lock></shapetype><shape id="_x0000_i1025" style="WIDTH: 423pt; HEIGHT: 267.75pt" type="#_x0000_t75"><imagedata src="file:///C:/DOCUME~1/zhaozd/LOCALS~1/Temp/msoclip1/01/clip_image001.png" o:title=""></imagedata></shape>
接下来只要让用CreateProcess+输出重定位就可以搞定了!
附.NET2003命令行使用:
C:/2003/Common7/IDE>devenv C:/test/ZFIVE5/ZFIVE5/ZFIVE5.csproj /rebuild Release
Microsoft (R) 开发环境 7.10.3077 版。
版权所有(C) Microsoft Corp 1984-2001。保留所有权利。
------ 已启动全部重新生成: 项目: ZFIVE5, 配置: Release .NET ------
正在准备资源...
正在更新引用...
正在执行主编译...
生成完成 -- 0 个错误,0 个警告
正在生成附属程序集...
---------------------- 完成 ---------------------
全部重新生成: 1 已成功, 0 已失败, 0 已跳过

2492

被折叠的 条评论
为什么被折叠?



