ZFIVE5[醉马不肖]

变 发奋编程、发奋设计和发奋探究

原创 .NET工程的自动化编译收藏

Author:zfive5(zhaozidong)

Email :zfive5@yahoo.com.cn

 

星期六去了一趟海龙,内存终于升G了,下午回来看了一会儿.NETmsdn帮助,发现

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

                 }

 

                 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的深谋远虑!!!

 

除非感到安全,否则人们就不能去迎接变化。

----《最后期限》

 

的确是一句名言!!!

 

发表于 @ 2006年03月27日 08:35:00|评论(loading...)

新一篇: csdn的blog为什么多出来一个%20 | 旧一篇: 我的第一个AJAX程序

用户操作
[即时聊天] [发私信] [加为好友]
ZFIVE5
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
ZFIVE5的公告

年迈的阿基米德,还有牛顿与高斯, 尽管他们理应跻身至尊三清。 在数学那荣耀的殿堂里, 不妨为另一位大师留出一席。
文章分类
收藏
GOOD BLOG
Cnblogs 首页原创.NET区
DentistryDoctor(牙医的目标是没有蛀牙)
Eagle-休闲一生
Google 黑板报
Robin's Blog
sodme(网络)
W2
zqqa
ξσ Dicky's Blog σξ
中国协议分析网
乌龙
凡夫俗子
博客堂
思归呓语
智慧的鱼(aoosang)的专栏
测试wendy
源代码搜索引挚
白吃
老木土
自由呼吸
陆其明(RSS)
非程序
朋友
存档
Csdn Blog version 3.1a
Copyright © ZFIVE5