示例#1
0
        private static CodeToolInfo CodeToolsInfoFromRegistry(string vsRoot, string toolName, RegistryKey toolKey)
        {
            int refreshDelay = defaultRefreshDelay;

            try { refreshDelay = (int)toolKey.GetValue("RefreshDelay", defaultRefreshDelay); }
            catch { }
            string displayName = toolKey.GetValue("DisplayName", toolName) as string;

            CodeToolInfo tool = new CodeToolInfo(vsRoot, toolName, displayName, refreshDelay);

            RegistryKey propPagesKey = toolKey.OpenSubKey("PropertyPages", false);

            if (propPagesKey != null)
            {
                foreach (string propPage in propPagesKey.GetSubKeyNames())
                {
                    PropertyPageInfo pageInfo = PropertyPageInfo.PropertyPageInfoFromRegistry(tool, propPagesKey, propPage);
                    if (pageInfo != null)
                    {
                        tool.propertyPages.Add(pageInfo);
                    }
                }
            }

            RegistryKey targetsKey = toolKey.OpenSubKey("CommonTargets", false);

            if (targetsKey != null)
            {
                foreach (string target in targetsKey.GetSubKeyNames())
                {
                    RegistryKey targetKey = targetsKey.OpenSubKey(target, false);
                    if (targetKey != null)
                    {
                        TargetInfo targetInfo = TargetInfo.ReadFromRegistry(tool, targetKey, target);
                        if (targetInfo != null)
                        {
                            tool.targets.Add(targetInfo);
                        }
                    }
                }
            }

            return(tool);
        }