我们可以在项目之间共享App.config的一些内容吗?

时间:2010-04-30 18:33:20

标签: c# .net

我的Visual Studio 2008解决方案中有两个独立的项目。两者都有自己的App.config。但是在一个项目中,我需要在另一个项目的App.config中定义一个或两个属性。是否可以从其他项目共享部分App.config内容?

5 个答案:

答案 0 :(得分:33)

是的 - 当然。任何配置部分都可以“外部化” - 例如:

<appSettings configSource="AppSettings.DEV.config" />
<connectionStrings configSource="MyConnection.config" />

<system.net>
   <mailSettings>
      <smtp configSource="smtp.TEST.config" />

VS。

<system.net>
   <mailSettings>
      <smtp configSource="smtp.PROD.config" />

任何配置部分都可以放在一个可以在项目之间共享的单独文件中 - 但没有配置部分,不幸的是,知道哪个是哪个有时候有点棘手。

此外,在某些情况下,Visual Studio会抱怨(使用红色波浪下划线)“configSource”应该是无效的 - 但它是 - 它是在.NET配置系统中的ConfigurationSection对象上定义的

<强>更新
另一个开发人员似乎不知道和使用的功能是Visual Studio能够从不同的项目中添加现有文件作为链接

alt text http://i44.tinypic.com/2vl5wls.png

有了这个,您可以将文件链接添加到本地项目中,并且它们将始终保持最新。如果你需要进行一些文件级共享(比如常见的配置文件等),那么生产效率会很高!

答案 1 :(得分:3)

试试这个:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings file="PROD.config">
    <add key="common.Currency" value="GBP" />
  </appSettings>
</configuration>

答案 2 :(得分:1)

只使用“正在运行”的app.config,但你可以像marc_s所说的那样去外部。

您还可以创建“共享”的.Settings文件。转到“共享”项目属性,左侧的“设置”选项卡,使用“应用程序范围”创建设置,并将“访问者修改器”设置为“公共”。在您的其他项目中,您可以使用ClassLibrary1.Properties.Settings.Default.SettingName来访问它。它将是强类型的,但您可能在编译时需要它。

答案 3 :(得分:1)

我喜欢做的事情,特别是在尝试协调库和测试之间的ServiceModel元素时,使用configSource来分割目标库中的配置,并简单地link / copy always我的测试中的片段项目。

这样我只能在一个地方维持。

您可以更进一步,只需在解决方案中有一个公共目录,并链接所有项目中的片段。

答案 4 :(得分:0)

在那种情况下,我认为使用数据库存储一些配置数据将是理想的。每个应用程序都有自己的功能,但是它们会查找共享数据库以获取这些常见的信息。

编辑:我说得太快了!看起来OP和我都学到了一些关于config files = D

的东西