示例#1
0
        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);
                }
            }
        }
示例#2
0
        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);
                }
            }
        }