熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

DTE .NET工程的自動化編譯

2013-11-13 09:43:42  來源: .NET編程 

  MSDN中描述DTE結構的示意圖如下:

  

  

  VC的代碼如下:

  

  #pragma warning( disable : )

  //The following #import imports DTE based on its LIBID

  #import libid:ccfeddddbdecdee version() lcid() raw_interfaces_only named_guids

  #pragma warning( default : )

  using namespace EnvDTE; // optional

  

  //……

  

  void CtDlg::OnBnClickedOk()

  {

  

  CoInitialize(NULL);

  {

  _variant_t varRelease=LRelease;

  _bstr_t    bstrSlnPath=LC:\\test\\W\\Wsln;

  

  try

  {

  CComPtr pZFIVE_DTE;

  _Solution  *pZFIVE_S=NULL;

  SolutionBuild *pZFIVE_SB=NULL;

  SolutionConfigurations *pZFIVE_SCs=NULL;

  SolutionConfiguration *pZFIVE_SC=NULL;

  

  pZFIVE_DTECoCreateInstance(LVisualStudioDTE );

  pZFIVE_DTE>get_Solution(&pZFIVE_S);

  if(pZFIVE_S==NULL)

  {

  pZFIVE_DTE>Quit();

  goto ZFiveComRet;

  }

  

  pZFIVE_S>Open(bstrSlnPath);

  VARIANT_BOOL var;

  pZFIVE_S>get_IsOpen(&var);

  if (var==VARIANT_TRUE)

  {

  pZFIVE_S>get_SolutionBuild(&pZFIVE_SB);

  if(pZFIVE_SB==NULL)

  {

  pZFIVE_S>Release();

  pZFIVE_S=NULL;

  pZFIVE_DTE>Quit();

  goto ZFiveComRet;

  }

  

  pZFIVE_SB>get_SolutionConfigurations(&pZFIVE_SCs);

  if(pZFIVE_SCs==NULL)

  {

  pZFIVE_SB>Release();

  pZFIVE_SB=NULL;

  pZFIVE_S>Release();

  pZFIVE_S=NULL;

  pZFIVE_DTE>Quit();

  goto ZFiveComRet;                          

  }

  

  pZFIVE_SCs>Item(varRelease&pZFIVE_SC);

  if(pZFIVE_SC!=NULL)

  {

  pZFIVE_SC>Activate();

  pZFIVE_SC>Release();

  pZFIVE_SC=NULL;

  }

  pZFIVE_SCs>Release();

  pZFIVE_SCs=NULL;

  

  pZFIVE_SB>Build(VARIANT_TRUE);

  pZFIVE_SB>Release();

  pZFIVE_SB=NULL;

  

  pZFIVE_S>Close();

  }

  else

  {

  AfxMessageBox(打開工程錯誤!);

  }

  

  pZFIVE_S>Release();

  pZFIVE_S=NULL;

  pZFIVE_DTE>Quit();

  }

  catch()

  {

  AfxMessageBox(接口調用錯誤!);

  }

  }

  

  ZFiveComRet:

  ::CoUninitialize();

  return;

  }


From:http://tw.wingwit.com/Article/program/net/201311/11426.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.