public VSItemTemplateDirectory(RegistryKey key, VSTemplateDirectory projectDirectory, VSProjectFactoryProject specialProject) : base() { var directoryKey = key.ToIndexable(); if (projectDirectory != null) { this.Package = projectDirectory.Package; } else { this.Package = specialProject.Package; } this.SubDirectories = new List <VSTemplateDirectory>(); this.Guid = Guid.Parse(directoryKey.SubName); this.ProjectDirectory = projectDirectory; this.SpecialProject = specialProject; var keys = key.Enumerate(); if (keys.Count() == 1) { var subKey = key.Enumerate().First(); ProcessSubKey(subKey, false); } else { foreach (var subKey in keys) { ProcessSubKey(subKey, true); } } }
public VSTemplateDirectory(RegistryKey key, VSPackage package, bool isPseudoFolder = false) : this() { var directoryKey = key.ToIndexable(); this.Package = package; this.SubDirectories = new List <VSTemplateDirectory>(); this.Guid = Guid.Parse(directoryKey.SubName); if (isPseudoFolder) { var displayName = (string)directoryKey["DisplayName"]; var name = string.Empty; if (displayName.StartsWith("#")) { name = ResourceLoader.LoadStringFrom(Package.SatelliteDll.FullName, displayName); } else { name = displayName; } this.Name = name; } else { var keys = key.Enumerate(); if (keys.Count() == 1) { var subKey = key.Enumerate().First(); ProcessSubKey(subKey, false); } else { foreach (var subKey in keys) { ProcessSubKey(subKey, true); } } } }
public VSProjectFactoryProject(Guid projectGuid, RegistryKey key) { var projectKey = key.ToIndexable(); var name = (string)projectKey.Default; string displayName = null; string packageGuid = null; var package = (VSPackage)null; if (projectKey["DisplayName"] != null) { displayName = projectKey["DisplayName"].ToString(); } if (projectKey["Package"] != null) { packageGuid = (string)projectKey["Package"]; } TemplateDirectories = new List <VSItemTemplateDirectory>(); if (packageGuid != null) { LoadPackage(Guid.Parse(packageGuid), out package); if (displayName != null) { if (displayName.StartsWith("#")) { this.DisplayName = package.GetString(displayName); } else { this.DisplayName = displayName; } } } else { this.DisplayName = displayName; } this.ProjectGuid = projectGuid; this.Package = package; this.Name = name; var templateDirsKey = key.Enumerate().Where(k => k.SubName == "AddItemTemplates") .Select(k => k.Key.Enumerate().Where(k2 => k2.SubName == "TemplateDirs").SingleOrDefault()).SingleOrDefault(); if (templateDirsKey != null) { foreach (var dirKey in templateDirsKey.Key.Enumerate()) { var projectDirectory = (VSTemplateDirectory)null; var guid = new Guid(dirKey.SubName); LoadDirectory(guid, out projectDirectory); var directory = new VSItemTemplateDirectory(dirKey.Key, projectDirectory, this); this.TemplateDirectories.Add(directory); } } }