コード例 #1
0
        public IEnumerable <WebDeployParameter> Read()
        {
            var results = GetAutoParameters();

            var nav = Document.CreateNavigator();

            nav.MoveToFirstChild();
            if (nav.Name != "parameters")
            {
                throw new FileFormatException($"Error parsing parameters xml. Expecting element 'parameters'.");
            }
            if (nav.MoveToFirstChild())
            {
                do
                {
                    if (nav.NodeType == XPathNodeType.Element && nav.Name == "parameter")
                    {
                        var result = new WebDeployParameter()
                        {
                            Name         = nav.GetAttribute("name", string.Empty),
                            DefaultValue = nav.GetAttribute("defaultvalue", string.Empty),
                            Description  = nav.GetAttribute("description", string.Empty)
                        };
                        var entries = new List <WebDeployParameterEntry>();
                        if (nav.MoveToFirstChild())
                        {
                            do
                            {
                                if (nav.NodeType == XPathNodeType.Element && nav.Name == "parameterentry")
                                {
                                    entries.Add(new WebDeployParameterEntry()
                                    {
                                        Kind  = nav.GetAttribute("kind", string.Empty),
                                        Match = nav.GetAttribute("match", string.Empty),
                                        Scope = nav.GetAttribute("scope", string.Empty)
                                    });
                                }
                            } while (nav.MoveToNext());
                        }
                        nav.MoveToParent();

                        result.Entries = entries;
                        results.Add(result);
                    }
                } while (nav.MoveToNext());
            }
            return(results);
        }
コード例 #2
0
        private ICollection <WebDeployParameter> GetConnectionStringParameters()
        {
            var results = new List <WebDeployParameter>();

            if (AutoParametersDocument != null)
            {
                var connectionStringsNode = AutoParametersDocument.SelectSingleNode("/configuration/connectionStrings");
                if (connectionStringsNode != null)
                {
                    var nav = connectionStringsNode.CreateNavigator();

                    if (nav.MoveToFirstChild())
                    {
                        do
                        {
                            if (nav.Name == "add")
                            {
                                var baseName = nav.GetAttribute("name", string.Empty);
                                var result   = new WebDeployParameter()
                                {
                                    Name         = $"{baseName}-Web.config Connection String",
                                    DefaultValue = nav.GetAttribute("connectionString", string.Empty),
                                    Description  = $"{baseName} Connection String used in web.config by the application to access the database.",
                                    Entries      = new List <WebDeployParameterEntry>()
                                    {
                                        new WebDeployParameterEntry()
                                        {
                                            Kind  = "XmlFile",
                                            Match = $"/configuration/connectionStrings/add[@name='{baseName}']/@connectionString",
                                            Scope = @"\\web.config$" //This isn't exactly right it will be an exact path.
                                        }
                                    }
                                };

                                results.Add(result);
                            }
                        } while (nav.MoveToNext());
                    }
                }
            }
            return(results);
        }