我在Visual Studio 2008中使用C#创建了一个类库(Core Processing Component),并在Website中添加了引用。网站成功访问类库。 Web.config具有一些配置值,由类库使用。
现在,我想在Window Application(C#VS-2k8)中访问相同的组件和配置。我可以在窗口应用程序中访问相同的类库。
但是,我如何Share the Web.config
使用Window Application的网站文件?所以,我不必复制相同的配置。
感谢。
更新#1
关于问题1的更多细节:我想add config file in Class Library
而不是依赖于应用程序的配置文件。例如。网站中的web.config或Windows应用程序中的app.config。
这是为了减少多个应用中相同配置的重复/冲突。
更新#2
我使用以下代码从窗口和Web应用程序的外部位置获取配置。但它不适合我。
D:\test.exe.config
档案
<configuration>
<appSettings>
<add key="KeyName" value="KeyValue"/>
</appSettings>
</configuration>
代码背后:
Configuration config = ConfigurationManager.OpenExeConfiguration("D:\\test.exe.config");
string strValue = config.AppSettings.Settings["KeyName"].Value;
答案 0 :(得分:2)
这是一个有趣的问题。一种选择是使用不同的持久性机制,该机制适用于多个消费者,如数据库。你可以在那里存储配置数据吗?
或者......你可以使用这里提供的答案:
Accessing App.config in a location different from the binary
答案 1 :(得分:2)
请注意,如果您需要外部化然后集中点 connectionStrings
和 appSettings
等节点,他们会接受 {{1 指向单独的文件。
但是,并非所有配置元素都支持此属性。
configSource
在.NET Framework 2.0版中,您现在可以包含配置 所有配置元素的单独文件中的设置 支持configSource属性。但是,当你使用的时候 configSource属性,您必须将整个部分移动到 单独的文件,因为没有元素设置的合并。那里 是使用configSource时对Web.config文件的一次性写入 属性。这会导致应用程序重新启动,但后续 该部分的更新直接写入单独的文件和 不要导致后续应用程序重新启动。欲获得更多信息, 见ConfigSource。
答案 2 :(得分:2)
是的,我得到了解决方案。
感谢Bob Horn
和JoeBilly
提供有价值的投入。
我已根据我的要求实施了配置。我已经搜索了很多完整的解决方案,但总是得到概念和一小段代码,这就是我提供完整工作代码的原因。
在下面提到的代码的帮助下,您可以实现以下目标并根据需要使用配置。
[CommonDB]
可以定义为单个
存储库,可以存储在外部XML文件中。类库将始终为Web和Windows应用程序提供一个值。[WebDBConn]
可以存储在web.config中。[WindowDBConn]
。[INPUT_PATH]
,请在wen.config和app.config中使用相同的键和diff值。但请记住,在common.config中不能提供密钥,否则将会获取common.config中可用的值。 Common.Config
用于类库/通用配置
<?xml version="1.0" encoding="utf-8" ?>
<appSettings>
<add key="CommonDB" value="CommonDBValue" />
</appSettings>
网站 Web.Config
<configuration>
<appSettings file="D:\Common.config">
<add key="WebDBConn" value="WebDBConnValue" />
<add key="INPUT_PATH" value="INPUT_PATH_WEB" />
</appSettings>
</configuration>
App.config
for Windows Application
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings file="D:\Common.config">
<add key="WindowDBConn" value="WindowDBConnValue" />
<add key="INPUT_PATH" value="INPUT_PATH_WINDOW" />
</appSettings>
</configuration>
背后的代码
string configValue = ConfigurationSettings.AppSettings["CommonDB"];
...谢谢