Ich versuche derzeit, über alle meine Projekte (Sharepoint) zu iterieren, um alle Feature-Guids in eine Datei zu bekommen. Dort möchte ich ihnen den Projektnamen voranstellen. Mein Problem ist, dass DTE.Solution.Item und DTE.Solution.Projects.Item (oder die Enumeratoren für foreach) keine Ganzzahl als Parameter annehmen und foreach ein Objekt zurückgibt, das nicht in Project umgewandelt werden kann.Zugriff auf Projekte über DTE in C# T4 Vorlage
Hier ist mein Code-Schnipsel:
var hostServiceProvider = (IServiceProvider) Host;
var dte = (DTE) hostServiceProvider.GetService(typeof(DTE));
var projectCount = dte.Solution.Projects.Count;
var projects = new Dictionary<string, string>();
foreach(Project dteProject in dte.Solution)
{
var dteProject = dte.Solution.Item(i);
projects.Add(dteProject.Name, dteProject.FullName);
}
Ok - der Code ist in Ordnung - der Debugger ist NICHT! Meine Ausnahmen wurden in einen Debug-Kontext geworfen, aber die Vorlage wird ordnungsgemäß ausgeführt, wenn der Debugger nicht angefügt ist.
ich genau dieses gleiche Problem sehe, und gerade heute morgen begegnet (gutes Timing auf die Frage). In meinem Fall wird eine InvalidCastException ausgelöst, wenn Project.ProjectItems iteriert wird. Wie unten beschrieben, wird es nur beim Debuggen der Vorlage ausgelöst. – daveaglick