Это то, что у меня так далеко:
if (reference.Type == prjReferenceType.prjReferenceTypeActiveX)
{
// reference is a COM object
}
else if (reference.SourceProject != null)
{
// reference is a project in the solution
}
else if (!string.IsNullOrEmpty(reference.Path))
{
// "reference" is either
// an valid external dll
// or a project that is not in the solution and is referenced by a C++ project
}
else
{
// reference is either
// a project not in the solution
// or an external dll with invalid path
}