以前のバージョンの Visual Studio では機能していたコードがいくつかありますが、新しいベータ版ではクラッシュし、その理由がわかりません。
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)
}