我一直使用这种技术。通常,我有一个需要某些设置的库程序集,并且我需要通过测试项目以及主要“可执行”程序集(无论是 Web 项目还是 Windows 服务项目)来设置它们。
您是正确的,当您为任何项目创建设置文件时,它会添加一个应用程序配置文件。您为任何设置输入的值都存储在两个位置 - 配置文件和设置基础结构创建的类的属性中。当找不到配置文件时,将使用属性中嵌入的值。
这是显示此类属性的片段:
下面的代码片段显示了生成的类中 ConcordanceServicesEndpointName 的默认值:
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("InternalTCP")]
public string ConcordanceServicesEndpointName {
get {
return ((string)(this["ConcordanceServicesEndpointName"]));
}
}
您想要做的是将配置部分从库程序集项目的 app.config 文件中复制出来,并将其(小心地)合并到主程序集的适用 web.config 或 app.config 中。在运行时,这是唯一使用的配置文件。
这是一个例子:
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="LitigationPortal.Documents.BLL.DocumentsBLLSettings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<applicationSettings>
<LitigationPortal.Documents.BLL.DocumentsBLLSettings>
<setting name="ConcordanceServicesEndpointName" serializeAs="String">
<value>InternalTCP</value>
</setting>
</KayeScholer.LitigationPortal.Documents.BLL.DocumentsBLLSettings>
</applicationSettings>