示例#1
0
        public static System.Configuration.Configuration LoadConfiguration(ITypeDescriptorContext context)
        {
            ArgumentValidation.NotNull("context", context);
            IVsHierarchy hier     = VsHelper.GetCurrentHierarchy(context);
            Project      proj     = VsHelper.ToDteProject(hier);
            string       filename = proj.FileName;
            string       fullname = proj.FullName;
            ////EnvDTE.Project proj = GetProject(soln, "Test");
            //EnvDTE.Configuration config = proj.ConfigurationManager.ActiveConfiguration;
            //EnvDTE.Properties props = config.Properties;
            ////VSLangProj.VSProject vsPrj = (VSLangProj.VSProject)proj.Object;

            //proj.

            //this.textBox1.Clear();
            //this.textBox1.AppendText(string.Format("Filename: {0}{1}", filename, Environment.NewLine));
            //this.textBox1.AppendText(string.Format("Fullname: {0}{1}", fullname, Environment.NewLine));
            string webConfigPath = null;

            foreach (var item in proj.ProjectItems)
            {
                var pItem = ((ProjectItem)item);
                //this.textBox1.AppendText(string.Format("\t{0}:{1}", pItem.Name, Environment.NewLine));
                if (pItem.Name == "Web.config" /* || pItem.Name == "App.config"*/)
                {
                    for (short i = 0; i < pItem.FileCount; i++)
                    {
                        var ifilename = pItem.FileNames[i];
                        //this.textBox1.AppendText(string.Format("\t\t{0}{1}", ifilename, Environment.NewLine));
                        webConfigPath = ifilename;
                        break;
                    }
                }
                if (webConfigPath != null)
                {
                    break;
                }
            }

            try
            {
                if (webConfigPath != null)
                {
                    string root = webConfigPath.Substring(0, webConfigPath.LastIndexOf(Path.DirectorySeparatorChar));
                    WebConfigurationFileMap fileMap = CreateFileMap(root);
                    var config = System.Web.Configuration.WebConfigurationManager.OpenMappedWebConfiguration(fileMap, "/web.config");
                    return(config);
                }
                else
                {
                    MessageBox.Show("Web Config Not Found!");
                    return(null);
                }
            }
            catch (System.Exception ex)
            {
                StringBuilder sb = new StringBuilder();
                sb.AppendFormat("{0}{1}", ex.Message, Environment.NewLine);
                sb.AppendFormat("{0}{1}", ex.StackTrace, Environment.NewLine);
                MessageBox.Show(sb.ToString(), ex.GetType().FullName);
                return(null);
            }
            throw new NotImplementedException();
        }
示例#2
0
        public static void LoadConfiguration(this IConfiguration target, ConfigurationRequest request)
        {
            ArgumentValidation.NotNull("configuration", target);
            ArgumentValidation.NotNull("request", request);
            IVsHierarchy hier          = VsHelper.GetCurrentHierarchy(request.ServiceProvider);
            Project      proj          = VsHelper.ToDteProject(hier);
            string       filename      = proj.FileName;
            string       fullname      = proj.FullName;
            string       webConfigPath = null;

            foreach (var item in proj.ProjectItems)
            {
                var pItem = ((ProjectItem)item);
                if (pItem.Name == "Web.config" /* || pItem.Name == "App.config"*/)
                {
                    for (short i = 0; i < pItem.FileCount; i++)
                    {
                        var ifilename = pItem.FileNames[i];
                        webConfigPath = ifilename;
                        break;
                    }
                }
                if (webConfigPath != null)
                {
                    break;
                }
            }

            try
            {
                if (webConfigPath != null)
                {
                    string root = webConfigPath.Substring(0, webConfigPath.LastIndexOf(Path.DirectorySeparatorChar));
                    WebConfigurationFileMap fileMap = CreateFileMap(root);
                    var config = System.Web.Configuration.WebConfigurationManager.OpenMappedWebConfiguration(fileMap, "/web.config");

                    if ((target.Dependencies & ConfigurationDependency.ConnectionString) == ConfigurationDependency.ConnectionString)
                    {
                        var connectionString = config.ConnectionStrings.ConnectionStrings[request.ConnectionStringName];
                        if (connectionString != null)
                        {
                            target.ConnectionString = connectionString.ConnectionString;
                        }
                        else
                        {
                            MessageBox.Show($"Connection String not found {request.ConnectionStringName}");
                        }
                    }

                    if ((target.Dependencies & ConfigurationDependency.StyleSheets) == ConfigurationDependency.StyleSheets)
                    {
                        var section = (Configuration.WebSection)config.GetSection("webpx/web");
                        target.StyleSheets = WebResourceManagement.GetStyleSheets(section);
                    }
                }
                else
                {
                    MessageBox.Show("Web Config Not Found!");
                }
            }
            catch (System.Exception ex)
            {
                StringBuilder sb = new StringBuilder();
                sb.AppendFormat("{0}{1}", ex.Message, Environment.NewLine);
                sb.AppendFormat("{0}{1}", ex.StackTrace, Environment.NewLine);
                MessageBox.Show(sb.ToString(), ex.GetType().FullName);
            }
        }