2010-01-15 24 views
5

Durante el uso de una tercera parte de DLL que estaba recibiendo la siguiente excepción:System.Configuration web.config y app.config

ExePath Se debe especificar que no se ejecuta dentro de un independiente exe

con la siguiente traza

System.Configuration.ConfigurationManager.OpenExeConfigurationImpl (ConfigurationFileMap FileMap, Boolean isMachine, ConfigurationUserLevel userLevel, cadena exePa th).

La razón que encontré fue que estaba buscando app.config y proporcioné los detalles en web.config. Mi pregunta es: ¿por qué la configuración del sistema diferencia entre web.config y app.config? ¿Alguna idea?

Respuesta

7

ejecutables:

varios archivos ejecutables de .NET pueden vivir en el mismo directorio. Como no puede haber dos archivos con el mismo nombre en el mismo directorio, las aplicaciones deben usar nombres diferentes para sus archivos de configuración principal. El esquema applicationName.exe.config resuelve esto.

Web aplicaciones/sitios web: aplicaciones

.NET se compilan a DLL y sitios web generalmente se compilan just-in-time. Por lo tanto, no hay un "punto de entrada principal" en este tipo de proyectos. Es posible crear un proyecto web donde cada página se compila en su propio ensamblaje. ¿Cuál es el ensamblaje principal? ¿Qué ensamblaje deberíamos nombrar después del archivo de configuración?

Afortunadamente, solo un proyecto web puede hospedarse desde un solo directorio, por lo que solo un archivo de configuración principal va a vivir aquí. Esto permite que el nombre del archivo de configuración principal sea elegido por convención, y que el nombre del archivo sea web.config.

6

web.config es solo para su sitio web y aplicaciones web. Permanece fijo, es decir, no cambia su nombre; siempre se llama web.config.

app.config es para aplicaciones que no son web - Winforms, WPF, NT Services, etc. Esto se renombrará en YourApplicationName.exe.config cuando construya su proyecto. Nunca encontrará un app.config con ese nombre en el directorio de una aplicación (o si lo hace, no se usará).

Por qué Microsoft elige usar dos tipos diferentes de nombres, no sé, pregunte a Microsoft.

Así que básicamente solo tiene que saber con qué está tratando y proporcionar la información en el lugar correcto.

+1

+1, he agregado mis pensamientos con respecto a la sección ** por qué ** en mi respuesta a continuación. –

Cuestiones relacionadas