Chciałbym uzyskać listę wszystkich publicznych metod w moim projekcie, które są ozdobione przy użyciu MyAttribute
przy użyciu T4/EnvDTE.Uzyskaj wszystkie metody, które są ozdobione określonym atrybutem za pomocą T4/EnvDTE
Wiem, że można to zrobić za pomocą refleksji, ale nie chcę ładować zespołu i zastanawiać się nad nim w szablonie T4, a raczej chcę użyć istniejących plików kodu jako źródła.
Poniżej boilerplate kod znalazłem w internecie, że Pobiera odwołanie do aktualnego projektu
<#@ 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");
#>
Nie widzę "namacalnego programu Visual Studio Automation Helper" na liście szablonów VS. – Omar
Widzę to teraz. Musisz otworzyć plik '.tt', w którym pojawi się menu' Tangible T4' z menu standardowym. To pierwszy element menu. Pozwól mi to zrobić. – Omar
Widzę Visual Studio Automation Helper w szablonie Gallary, ale nie ma odniesienia do VisualStudioHelper w dowolnym miejscu. Istnieje klasa o nazwie DteHelper, ale nie ma metod wskazanych w twoim przykładzie, takich jak GetAllCodeElementsOfType. –