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");
#>