0

我在 Visual Studio 2008 中使用 C# 创建了一个类库(核心处理组件),并在网站中添加了引用。网站访问类库成功。Web.config 具有一些配置值,供类库使用。

现在,我想在 Window 应用程序 (C# VS-2k8) 中访问相同的组件和配置。我能够在窗口应用程序中访问相同的类库。

但是,我如何Share the Web.config使用 Window 应用程序归档网站?因此,我不必复制相同的配置。

谢谢。

更新#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;
4

3 回答 3

2

这是一个有趣的问题。一种选择是使用针对多个消费者的不同持久性机制,例如数据库。你可以在那里存储你的配置数据吗?

或者...您可以使用此处提供的答案:

在不同于二进制文件的位置访问 App.config

于 2012-03-22T17:49:31.207 回答
2

请注意,如果您需要外部化然后集中节点,例如connectionStringsand appSettings,它们接受 aconfigSource以指向单独的文件。

但是,并非所有配置元素都支持此属性。

<appSettings configSource="appSettings.config"/>
<connectionStrings configSource="connectionStrings.config"/>

在 .NET Framework 2.0 版中,您现在可以将支持 configSource 属性的所有配置元素的配置设置包含在单独的文件中。但是,当您使用 configSource 属性时,您必须将整个部分移动到单独的文件中,因为没有合并元素设置。使用 configSource 属性时会一次性写入 Web.config 文件。这会导致应用程序重新启动,但对该部分的后续更新将直接写入单独的文件,并且不会导致后续应用程序重新启动。有关详细信息,请参阅ConfigSource

于 2012-03-24T17:19:30.753 回答
2

是的,我得到了解决方案。感谢Bob HornJoeBilly提供宝贵的意见。

我已经按照我的要求实现了配置。我已经搜索了很多完整的解决方案,但总是得到概念和一小段代码,这就是我提供完整工作代码的原因。

借助下面提到的代码,您可以实现以下目标并根据需要进行配置。

  1. 通用配置 [CommonDB]可以定义为单个存储库,并且可以存储在外部 XML 文件中。类库将始终为 Web 和 Windows 应用程序提供一个值。
  2. 网站特定配置[WebDBConn]可以存储在 web.config 中。
  3. Window Application 特定的配置[WindowDBConn]可以在 app.config 中提及。
  4. 如果您想根据应用程序使用具有不同值 [INPUT_PATH]的相同键,则在 wen.config 和 app.config 中使用相同的键和差异值。但请记住,在 common.config 中不应该提供密钥,否则将获取 common.config 中可用的值。
  5. 好处是您不必为了获取这些值而更改代码背后的方法。

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适用于 Windows 应用程序

<?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"];

谢谢...

于 2012-03-26T12:32:56.153 回答