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