⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 compliervcnet.cpp

📁 自动化编译工具代码
💻 CPP
字号:
// ComplierVCNet.cpp: implementation of the CComplierVCNet class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "ComplierVCNet.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

#if _MSC_VER >= 1300

CComplierVCNet::CComplierVCNet(NetVersion version)
{
	CString strNETVersion;
	if		(NET2002 == version) strNETVersion = "VisualStudio.DTE.7.0";
	else if	(NET2003 == version) strNETVersion = "VisualStudio.DTE.7.1";
	else if	(NET2005 == version) strNETVersion = "VisualStudio.DTE.8.0";
	else                         ASSERT(FALSE);

	if (!strNETVersion.IsEmpty())
	{
		HRESULT hr = m_pDTE.CreateInstance(strNETVersion);
		ASSERT(SUCCEEDED(hr));
	}
}

CComplierVCNet::~CComplierVCNet()
{

}

BOOL CComplierVCNet::Build(const CString &strProjectFile,
						   const CString &strConfigName,
						   const CString &strOutputFile)
{
	_SolutionPtr pSolution;
	HRESULT hr = m_pDTE->get_Solution(&pSolution);
	hr = pSolution->Open(_bstr_t(strProjectFile.AllocSysString()));
	if (FAILED(hr))			return FALSE;

	SolutionBuildPtr			pSolutionBuild;
	hr = pSolution->get_SolutionBuild(&pSolutionBuild);
	SolutionConfigurationsPtr	pSolutionConfigurations;
	hr = pSolutionBuild->get_SolutionConfigurations(&pSolutionConfigurations);

	long lCount = 0;
	pSolutionConfigurations->get_Count(&lCount);
	for (int i = 1; i <= lCount; i++)		//Iterator SolutionConfigurations
	{
		SolutionConfigurationPtr pSolutionConfiguration;
		hr = pSolutionConfigurations->Item(CComVariant(i), &pSolutionConfiguration);
		//		ASSERT(pSolutionConfiguration != NULL);

		CComBSTR bstrConfig;
		hr = pSolutionConfiguration->get_Name(&bstrConfig);
		bstrConfig.ToLower();
		if (CString(bstrConfig.Copy()) == strConfigName)			//only complier release
		{
			hr = pSolutionConfiguration->Activate();
			hr = pSolutionBuild->Clean(VARIANT_TRUE);
			hr = pSolutionBuild->Build(VARIANT_TRUE);
			return SUCCEEDED(hr);
		}
	}

	return FALSE;
}

#endif // _MSC_VER > 1000

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -