是否可以在app.config
或web.config
文件中执行以下操作?
然后我想在我的代码中访问Dir2,只需说:
ConfigurationManager.AppSettings["Dir2"]
当我在不同的服务器和位置安装我的应用程序时,这将帮助我,我将只需要更改我的整个条目app.config
.(我知道我可以管理代码中的所有连接,但我更喜欢这种方式).
稍微复杂但更灵活的替代方法是创建表示配置节的类.在您的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"
您可以使用我的Expansive库完成:http://nuget.org/List/Packages/Expansive Source可在此处获取:https://github.com/anderly/Expansive
好问题.
我不认为有.我相信如果有一种简单的方法,那将是众所周知的,我看到微软正在Visual Studio 2010中创建一种机制,用于部署和测试不同的配置文件.
然而,据说; 我发现你在该ConnectionStrings
部分中有一种名为"| DataDirectory |"的占位符.也许你可以看看那里的工作......
这是machine.config
展示它的一块: