I would like to confirm your plan to use EnvDTE to gain design-time information about your project's classes and methods. In my opinion it's more reliable than risking to reflect an outdated assembly of the same project.
Since you already got the current project of your solution you should now use the Visual Studio CodeModel to iterate your classes and their methods etc. I know this can be pretty annoying, but I found a free reusable .ttinclude template that provides you with methods easing the access to the CodeModel. You might want to check out tangible's T4 Editor. It's free and ships with a free template gallery that contains one named "tangible Visual Studio Automation Helper". Using this template your resulting code could look like this:
<#
// get a reference to the project of this t4 template
var project = VisualStudioHelper.CurrentProject;
// get all class items from the code model
var allClasses = VisualStudioHelper.GetAllCodeElementsOfType(project.CodeModel.CodeElements, EnvDTE.vsCMElement.vsCMElementClass, false);
// iterate all classes
foreach(EnvDTE.CodeClass codeClass in allClasses)
{
// get all methods implemented by this class
var allFunctions = VisualStudioHelper.GetAllCodeElementsOfType(codeClass.Members, EnvDTE.vsCMElement.vsCMElementFunction, false);
foreach(EnvDTE.CodeFunction function in allFunctions)
{
// get all attributes this method is decorated with
var allAttributes = VisualStudioHelper.GetAllCodeElementsOfType(function.Attributes, vsCMElement.vsCMElementAttribute, false);
// check if the System.ObsoleteAttribute is present
if (allAttributes.OfType<EnvDTE.CodeAttribute>()
.Any(att => att.FullName == "System.ObsoleteAttribute"))
{
#><#= function.FullName #>
<#
}
}
}
#>