1

我在 .Net 2.0 中有一个 Windows 应用程序,它使用多个级别的配置文件。由于我无法控制的原因,该应用程序包含一个 Windows 应用程序 (.exe) 项目和几个 DLL,每个 DLL 都有自己的 app.config 文件。

我已经成功地弄清楚了如何使用(在 C# 中)读取每个 DLL 的配置文件

ConfigurationManager.OpenMappedExeConfiguration("my DLL's config file path", ConfigurationUserLevel.None);

这工作得很好 - 当指向我的 DLL 配置文件的文件路径名(“foo.dll.config”)时,我可以确认我从这个方法中获得了一个配置对象。但是,当我尝试访问自定义配置部分时,我收到一个异常,指出无法找到我的自定义配置部分的数据类型。

以这种方式加载配置文件时,我还需要做什么才能获得可用于我的代码的键入信息?

4

1 回答 1

3

不幸的是,这是事实:处理此问题的方法是将配置从 .dll.config 文件复制到应用程序的配置文件中。唯一的例外与 Windows 窗体中使用的设置系统有关。我认为这对你来说是 OpenMappedConfiguration,但我不确定。

我从来不知道为什么他们没有在 .NET 2.0 中统一这一点并解决问题。也许我应该问。


当天早些时候,我在 MSDN 的奥斯陆论坛 ( http://social.msdn.microsoft.com/Forums/en-US/oslo/thread/c93ee7f3-4f9b-4044 ) 上问了一个与 WCF 相关的问题。-b1f0-43ad72fb508d)。当我在寻找博客文章或其他答案时(正如我上面所说,“也许我应该问”),我的论坛帖子的答案到了。

长话短说,有点半开玩笑,答案是:他们没有在 .NET 2.0 中解决这个问题,因为他们正在等待奥斯陆解决这个问题。

在不试图通过理解这一点来避免反对票的情况下,我只想提一下:奥斯陆将鼓励将应用程序模型和应用程序组件存储在中央存储库中。这将包括每个实例配置的模型。理论上,所有此类数据都将存储在单个存储库中(至少每个系统)。因此,不再需要配置文件位于何处的问题,它都在一个地方。不再需要查找包含配置部分元数据的程序集 - 元数据与配置数据一起存储在存储库中。

Ask me tomorrow, and I may feel differently, but right now, I may be picking up the Oslo religion...

于 2009-03-11T20:49:07.773 回答