星期六去了一趟海龍,內(nèi)存終于升g了,下午回來(lái)看了一會(huì)兒.net的msdn幫助,發(fā)現(xiàn)
dte,覺(jué)得對(duì)大團(tuán)隊(duì)自動(dòng)化編譯很有利用價(jià)值了,就想寫(xiě)點(diǎn)東西出來(lái)!
通過(guò)這個(gè)接口很容易實(shí)現(xiàn)vc7的工程編譯自動(dòng)化,什么也不說(shuō)了, 一切盡在代碼中!
msdn中描述dte結(jié)構(gòu)的示意圖如下:
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<envdte::_dte> pzfive5_dte;
_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;
}
pzive5_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("打開(kāi)工程錯(cuò)誤!");
}
pzfive5_s->release();
pzfive5_s=null;
pzfive5_dte->quit();
}
catch(...)
{
afxmessagebox("接口調(diào)用錯(cuò)誤!");
}
}
zfive5comret:
::couninitialize();
return;
}
寫(xiě)到這里不能不佩服ms的深謀遠(yuǎn)慮!!!
除非感到安全,否則人們就不能去迎接變化。
----《最后期限》
的確是一句名言!!!
新聞熱點(diǎn)
疑難解答
圖片精選