当前位置:  开发笔记 > 编程语言 > 正文

app.config/web.config中的变量

如何解决《app.config/web.config中的变量》经验,为你挑选了3个好方法。

是否可以在app.configweb.config文件中执行以下操作?


 
 
 

然后我想在我的代码中访问Dir2,只需说:

 ConfigurationManager.AppSettings["Dir2"]

当我在不同的服务器和位置安装我的应用程序时,这将帮助我,我将只需要更改我的整个条目app.config.(我知道我可以管理代码中的所有连接,但我更喜欢这种方式).



1> Matt Hamsmit..:

稍微复杂但更灵活的替代方法是创建表示配置节的类.在您的app.config/ web.config文件中,您可以拥有:



    
    
        

然后,在您的.NET代码中(我将在我的示例中使用C#),您可以创建两个类,如下所示:

using System;
using System.Configuration;

namespace MyProjectNamespace {

    public class DirectoryInfoConfigSection : ConfigurationSection {

        [ConfigurationProperty("Directory")]
        public DirectoryConfigElement Directory {
            get {
                return (DirectoryConfigElement)base["Directory"];
            }
    }

    public class DirectoryConfigElement : ConfigurationElement {

        [ConfigurationProperty("MyBaseDir")]
        public String BaseDirectory {
            get {
                return (String)base["MyBaseDir"];
            }
        }

        [ConfigurationProperty("Dir1")]
        public String Directory1 {
            get {
                return (String)base["Dir1"];
            }
        }

        [ConfigurationProperty("Dir2")]
        public String Directory2 {
            get {
                return (String)base["Dir2"];
            }
        }
        // You can make custom properties to combine your directory names.
        public String Directory1Resolved {
            get {
                return System.IO.Path.Combine(BaseDirectory, Directory1);
            }
        }
    }
}

最后,在程序代码中,您可以app.config使用新类以这种方式访问变量:

DirectoryInfoConfigSection config =
  (DirectoryInfoConfigSection)ConfigurationManager.GetSection("DirectoryInfo");
String dir1Path = config.Directory.Directory1Resolved;  // This value will equal "C:\MyBase\Dir1"



2> anderly..:

您可以使用我的Expansive库完成:http://nuget.org/List/Packages/Expansive Source可在此处获取:https://github.com/anderly/Expansive


我觉得这个答案很受评价!

3> Arjan Einbu..:

好问题.

我不认为有.我相信如果有一种简单的方法,那将是众所周知的,我看到微软正在Visual Studio 2010中创建一种机制,用于部署和测试不同的配置文件.

然而,据说; 我发现你在该ConnectionStrings部分中有一种名为"| DataDirectory |"的占位符.也许你可以看看那里的工作......

这是machine.config展示它的一块:

 
    
 


DataDirectory值实际上是AppDomain中的数据元素.您可以使用AppDomain.CurrentDomain.SetData("DataDirectory",dataPath)覆盖该值; 我没有测试你是否可以定义这样的其他变量并让它们"自动扩展"但是......
推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有