author:zfive5(zhaozidong)
email :zfive5@yahoo.com.cn
星期六去了一趟海龙,内存终于升g了,下午回来看了一会儿.net的msdn帮助,发现dte,觉得对大团队自动化编译很有利用价值了,就想写点东西出来!
通过这个接口很容易实现vc7的工程编译自动化,什么也不说了, 一切尽在代码中!
msdn中描述dte结构的示意图如下:
vc7.1的代码如下:
#pragma warning( disable : 4278 )
//the following #import imports dte based on its libid
#import "libid:80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2" version("7.0") lcid("0") raw_interfaces_only named_guids
#pragma warning( default : 4278 )
using namespace envdte; // optional
//……
void ct3dlg::onbnclickedok()
{
coinitialize(null);
{
_variant_t varrelease=l"release";
_bstr_t bstrslnpath=l"c:\\test\\w3\\w3.sln";
try
{
ccomptr
_solution *pzfive5_s=null;
solutionbuild *pzfive5_sb=null;
solutionconfigurations *pzfive5_scs=null;
solutionconfiguration *pzfive5_sc=null;
pzfive5_dte.cocreateinstance(l"visualstudio.dte.7.1", 0);
pzfive5_dte->get_solution(&pzfive5_s);
if(pzfive5_s==null)
{
pzfive5_dte->quit();
goto zfive5comret;
}
pzfive5_s->open(bstrslnpath);
variant_bool var;
pzfive5_s->get_isopen(&var);
if (var==variant_true)
{
pzfive5_s->get_solutionbuild(&pzfive5_sb);
if(pzfive5_sb==null)
{
pzfive5_s->release();
pzfive5_s=null;
pzfive5_dte->quit();
goto zfive5comret;
}
pzfive5_sb->get_solutionconfigurations(&pzfive5_scs);
if(pzfive5_scs==null)
{
pzfive5_sb->release();
pzfive5_sb=null;
pzfive5_s->release();
pzfive5_s=null;
pzfive5_dte->quit();
goto zfive5comret;
}
pzfive5_scs->item(varrelease,&pzfive5_sc);
if(pzfive5_sc!=null)
{
pzfive5_sc->activate();
pzfive5_sc->release();
pzfive5_sc=null;
}
pzfive5_scs->release();
pzfive5_scs=null;
pzfive5_sb->build(variant_true);
pzfive5_sb->release();
pzfive5_sb=null;
pzfive5_s->close(0);
}
else
{
afxmessagebox("打开工程错误!");
}
pzfive5_s->release();
pzfive5_s=null;
pzfive5_dte->quit();
}
catch(...)
{
afxmessagebox("接口调用错误!");
}
}
zfive5comret:
::couninitialize();
return;
}
写到这里不能不佩服ms的深谋远虑!!!
除非感到安全,否则人们就不能去迎接变化。
----《最后期限》
的确是一句名言!!!
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器