我有一些代码,以前的版本的Visual Studio中工作,但崩溃在新的测试版,我似乎无法弄清楚为什么。代码崩溃与VS11测试版
我正在尝试获取VCProject的VCReferences对象。它应该在所有版本的VS上工作的代码。
谢谢。
VCProject * GetVCProjectObject(IDispatch * aDispatch)
{
IID VCProject_IID;
switch(mStudioVersion)
{
case VS2003:
::IIDFromString(_bstr_t(L"{70b6c8e7-5b3e-49c7-9937-c5f0b3168af3}"), &VCProject_IID);
break;
case VS2005:
::IIDFromString(_bstr_t(L"{238b5174-2429-11d7-8bf6-00b0d03daa06}"), &VCProject_IID);
break;
case VS2008:
::IIDFromString(_bstr_t(L"{3990034a-3af2-44c9-bd22-7b10654b5721}"), &VCProject_IID);
break;
case VS2010:
::IIDFromString(_bstr_t(L"{885c172e-5b7a-43b9-8ad0-697f48233772}"), &VCProject_IID);
break;
case VS11:
::IIDFromString(_bstr_t(L"{F900F95E-1D99-4631-BBD1-E3E1E078D58E}"), &VCProject_IID);
break;
}
CComPtr<VCProject> vcProject;
aDispatch->QueryInterface(VCProject_IID, (void**)&vcProject);
return vcProject.Detach();
}
void SomeMethod(EnvDTE::Project * aProject)
{
CComPtr<IDispatch> pID;
aProject->get_Object(&pID);
CComPtr<VCProject> vcProject = GetVCProjectObject(pID);
if (!vcProject)
return false;
CComPtr<IDispatch> dipsProjRefs;
//CRASH HERE !!!!
vcProject->get_VCReferences(&dipsProjRefs)
}
首先添加错误检查代码。不验证任何函数值只是要求您无法诊断的麻烦。使用connect.microsoft.com报告测试版错误。 – 2012-03-28 12:41:34
“它崩溃”是什么意思?它如何崩溃?崩溃时栈上有什么?抛出异常吗?抛出什么异常?如果单步执行代码,那么执行崩溃之前的所有语句都没有错误? – 2012-04-12 22:24:32