【发布时间】:2010-09-30 09:17:37
【问题描述】:
如何在 Visual Studio 解决方案中的多个项目之间共享/链接 App.config 或 Web.config?
【问题讨论】:
标签: .net visual-studio
如何在 Visual Studio 解决方案中的多个项目之间共享/链接 App.config 或 Web.config?
【问题讨论】:
标签: .net visual-studio
在您从 Visual Studio 的 Solution Explorer 获得的 Add Existing Item 对话框中,您可以将指向磁盘上另一个文件的链接添加到项目中。为此,您必须单击添加按钮右侧的向下箭头并选择添加为链接。
【讨论】:
App.config 文件被复制到输出文件夹,就像它在项目目录中一样。从那里您可以通过Configuration 类访问其内容。
Another approach 来自微软:
使用
<appSettings>元素的文件属性来指定一个 外部文件,它将定义常见的<appSettings>元素。外部文件将具有与 app.config 相同的架构 文件,但根节点必须是
<appSettings>而不是<configuration>。创建通用配置文件:
- 在“文件”菜单上,指向“新建”,然后单击“文件”。
在“新建文件”对话框中,执行以下操作:
一个。在“类别”窗格中,选择“常规”。
湾。在“模板”窗格中,选择 XML 文件。
C。单击“打开”按钮创建一个新的通用配置设置文件。添加一个新的
<appSettings>元素。使用
<add>元素在<appSettings>节点中添加所需的尽可能多的常用配置设置,方法与使用相同 任何正常的 app.config 文件。保存配置文件。
在每个项目中指定通用配置文件
打开每个客户端项目的 app.config 文件。
导航到
<configuration>节点内的<appSettings>元素。如果元素不存在,则添加一个新元素。向
<appSettings>元素添加一个新的属性文件,并指定通用配置文件的相对路径作为其值。
客户端项目现在将能够访问通用配置 设置。示例
以下示例显示了如何在外部文件中定义常用配置设置。
<?xml version="1.0" encoding="utf-8" ?> <appSettings> <add key="commonSetting1" value="MyApplication1" /> <add key="commonSetting2" value="MySetting" /> </appSettings>以下示例展示了如何在项目的 app.config 文件中指定通用配置文件的路径。
<?xml version="1.0" encoding="utf-8" ?> <appSettings file=”c:\commonSettings.config”> <add key="myAppSpecificSetting" value="Setting1" /> </appSettings>如示例所示,客户端项目的 app.config 文件可以包含 中指定的附加设置
<appSettings>元素除了指向公共 配置文件。如果多次指定相同的设置, 使用指定的最后一个值。如果在中指定了相同的设置 通用配置文件和客户端项目 app.config 文件,使用通用配置文件中指定的值。
【讨论】:
首先,请记住 App.config 或 web.config 对在解决方案中的启动项目建立的“过程”中使用的任何项目中运行的所有代码都是可见的......即,如果您的解决方案有一个控制台应用程序和 5 个类库,或者一个 WinForms 应用程序和 4 个类库,或者一个 WIndows 服务和 3 个类库,或者一个控制台应用程序用作启动项目,另一个控制台应用程序用作一个类库,那么你就没有问题了,配置 app.config 和所有引用的文件,在所有项目中都是可见的。
其次,如果您将在您的解决方案中运行两个或多个单独的可执行进程(例如作为服务器的 Windows 服务和 Winforms 客户端),那么如果您希望它们共享特定的配置设置,您 可以将这些设置放在 machine.config 文件中,尽管您应该小心执行此操作.. 并且一些企业服务器团队对此不满意..
【讨论】:
根据 nawfal 的帖子, 如果您想使用 ConfigurationManager 操作 appSettings,请使用 configSource 属性:
<?xml version="1.0" encoding="utf-8" ?>
<appSettings configSource=”c:\commonSettings.config”>
<add key="myAppSpecificSetting" value="Setting1" />
</appSettings>
【讨论】: