Holen Sie sich alle Methoden, die mit einem bestimmten Attribut dekoriert sind, mit T4 / EnvDTE

Ich möchte eine Liste aller öffentlichen Methoden in meinem Projekt erhalten, die mit dekoriert wurdenMyAttribute mit T4 / EnvDTE.

Ich weiß, dass dies mit Reflektion durchgeführt werden kann, aber ich möchte die Assembly nicht laden und in einer T4-Vorlage darüber reflektieren, sondern die vorhandenen Codedateien als Quelle verwenden.

Das Folgende ist der Code, den ich im Internet gefunden habe und der einen Verweis auf das aktuelle Projekt enthält

<#@ template debug="true" hostspecific="true" language="C#" #>
<#@ assembly name="EnvDTE" #>
<#@ assembly name="System.Core.dll" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="System.IO" #>
<#@ output extension=".cs" #>

<#
    IServiceProvider _ServiceProvider = (IServiceProvider)Host;
    if (_ServiceProvider == null)
        throw new Exception("Host property returned unexpected value (null)");

    EnvDTE.DTE dte = (EnvDTE.DTE)_ServiceProvider.GetService(typeof(EnvDTE.DTE));
    if (dte == null)
        throw new Exception("Unable to retrieve EnvDTE.DTE");

    Array activeSolutionProjects = (Array)dte.ActiveSolutionProjects;
    if (activeSolutionProjects == null)
        throw new Exception("DTE.ActiveSolutionProjects returned null");

    EnvDTE.Project dteProject = (EnvDTE.Project)activeSolutionProjects.GetValue(0);
    if (dteProject == null)
        throw new Exception("DTE.ActiveSolutionProjects[0] returned null");

#>

Antworten auf die Frage(1)

Ihre Antwort auf die Frage