动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
   .Net → 阅读文章

 .NET工程的自动化编译

作者来源: 
阅读 数 75 人次 , 2006-4-25 14:56:00 


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

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

----《最后期限》

的确是一句名言!!!
  
 本文Tags编译  
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:VC++6实现简单的代理服务器
· 下一篇:VC.NET的Direct3D极速入门宝典
· asp+的页面指示标识
· VB.Net图解入门
· .NET体系中的源程序安全问题(2)
· ado.net数据操作全接触一(insert,update,delete)
· 将Word文档转化为HTML格式的文档


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077