Example #1
0
 /// <summary>
 /// </summary>
 /// <param name="context"></param>
 /// <devdoc>
 /// Called to register this attribute with the given context.  The context
 /// contains the location where the registration information should be placed.
 /// It also contains such as the type being registered, and path information.
 /// This method is called both for registration and unregistration.  The difference is
 /// that unregistering just uses a hive that reverses the changes applied to it.
 /// </devdoc>
 public override void Register(RegistrationAttribute.RegistrationContext context)
 {
     using (Key key = context.CreateKey(RegistryPath))
     {
         key.SetValue("", RegName);
         key.SetValue("Service", _providerType.GUID.ToString("B"));
         key.SetValue("Package", PackageGuid.ToString("B"));
         key.SetValue("DisplayName", DisplayName);
     }
 }
        public override void Register(RegistrationContext context)
        {
            using var key = context.CreateKey("AutomationProperties\\" + Category + "\\" + Page);
            key.SetValue(null, "#" + ProfileNodeLabelId.ToString());
            key.SetValue("Description", "#" + ProfileNodeDescriptionId.ToString());
            key.SetValue("Name", Page);
            key.SetValue("Package", PackageGuid.ToString("B"));

            if (ResourcePackageGuid.HasValue)
            {
                key.SetValue("ResourcePackage", ResourcePackageGuid.Value.ToString("B"));
            }

            key.SetValue("ProfileSave", 1);
            key.SetValue("VSSettingsMigration", (int)ProfileMigrationType.PassThrough);
        }
        /// <summary>
        /// Extract GUIDs and IDs descriptions from given XML content.
        /// </summary>
        private static List <PackageGuid> Parse(string vsctContentFile)
        {
            List <PackageGuid> result = new List <PackageGuid>();

            var xml = new XmlDocument();

            XmlElement symbols = null;

            try
            {
                xml.LoadXml(vsctContentFile);

                // having XML loaded go through and find:
                // CommandTable / Symbols / GuidSymbol* / IDSymbol*
                if (xml.DocumentElement != null && xml.DocumentElement.Name == "CommandTable")
                {
                    symbols = xml.DocumentElement["Symbols"];
                }
            }
            catch
            {
                return(result);
            }

            if (symbols != null)
            {
                var guidSymbols = symbols.GetElementsByTagName("GuidSymbol");

                foreach (XmlElement symbol in guidSymbols)
                {
                    try
                    {
                        // go through all GuidSymbol elements...
                        var value = symbol.Attributes["value"].Value;
                        var name  = symbol.Attributes["name"].Value;

                        // preprocess value to remove the brackets:
                        try
                        {
                            value = new Guid(value).ToString("D");
                        }
                        catch
                        {
                            value = "-invalid-";
                        }

                        var guid = new PackageGuid(name, value);

                        result.Add(guid);

                        var idSymbols = symbol.GetElementsByTagName("IDSymbol");

                        foreach (XmlElement i in idSymbols)
                        {
                            try
                            {
                                // go through all IDSymbol elements...
                                guid.Ids.Add(Tuple.Create(i.Attributes["name"].Value, i.Attributes["value"].Value));
                            }
                            catch
                            {
                            }
                        }
                    }
                    catch
                    {
                    }
                }
            }

            return(result);
        }