在使用第三方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?有什么想法吗?
答案 0 :(得分:7)
<强>可执行文件:强>
多个.NET可执行文件可以存在于同一目录中。由于同一目录中不能有两个具有相同名称的文件,因此应用程序必须为其主配置文件使用不同的名称。 applicationName.exe.config
方案解决了这个问题。
网络应用程序/网站:
.NET Web应用程序被编译为DLL,并且网站通常是及时编译的。因此,在这些类型的项目中没有“主要切入点”。可以创建一个Web项目,其中每个页面都编译为自己的程序集。哪一个是主要组件?我们应该在哪个程序集中命名配置文件?
幸运的是,只能从一个目录托管一个Web项目,因此这里只有一个主要配置文件。这允许按惯例选择主配置文件名,并且该文件名恰好是web.config
。
答案 1 :(得分:6)
web.config
仅适用于您的网站和网络应用程序。它保持固定,即不改名;它总是被称为web.config
。
app.config
适用于非Web应用程序 - Winforms,WPF,NT服务等。在您构建项目时,这将重命名为YourApplicationName.exe.config
。您将永远不会在应用程序的目录中找到该名称的app.config
(或者如果您这样做,它将不会被使用)。
为什么微软选择使用两种不同的名称 - 我不知道 - 请问微软。
所以你基本上只需知道你正在处理什么,并在正确的地方提供信息。