5

在使用第三方 dll 时,我遇到了以下异常:

不在独立 exe 中运行时必须指定 exePath

带有以下痕迹

System.Configuration.ConfigurationManager.OpenExeConfigurationImpl(ConfigurationFileMap fileMap, Boolean isMachine, ConfigurationUserLevel userLevel, String exePath)。

我发现的原因是它正在寻找 app.config 并且我在 web.config 中提供了详细信息。我的问题是:为什么 system.configuration 区分 web.config 和 app.config?有什么想法吗?

4

2 回答 2

7

可执行文件:

多个 .NET 可执行文件可以存在于同一目录中。由于同一目录下不能有两个同名文件,因此应用程序的主配置文件必须使用不同的名称。该applicationName.exe.config方案解决了这个问题。

网络应用程序/站点:

.NET Web 应用程序被编译为 DLL,而网站通常是即时编译的。因此,这些类型的项目没有“主要入口点”。可以创建一个 Web 项目,其中每个页面都编译为自己的程序集。哪一个是主要组件?我们应该以哪个程序集命名配置文件?

幸运的是,一个目录只能托管一个 Web 项目,因此这里只有一个主配置文件。这允许按约定选择主配置文件名,并且该文件名恰好是web.config.

于 2010-01-15T13:06:37.953 回答
6

web.config仅适用于您的网站和 Web 应用程序。它保持固定,即不更改其名称;它总是被称为web.config

app.config适用于非 Web 应用程序 - Winforms、WPF、NT 服务等。这将YourApplicationName.exe.config在您构建项目时重命名。您永远不会app.config在应用程序的目录中找到具有该名称的名称(或者如果您找到,则不会使用它)。

为什么微软选择使用两种不同的名称——我不知道——问问微软。

所以你基本上只需要知道你在处理什么,并在正确的地方提供信息。

于 2010-01-15T11:40:20.963 回答