2010-01-15 2 views
5

나는 다음과 같은 예외를 얻고 있었다 타사 DLL을 사용하는 동안 : 독립형 EXE 내에서 실행하지 않을 경우System.configuration web.config를과의 app.config

exePath 지정해야합니다

다음 추적과

System.Configuration.ConfigurationManager.OpenExeConfigurationImpl (ConfigurationFileMap fileMap, 부울 isMachine, ConfigurationUserLevel 유저 레벨, 문자열 exePa th).

내가 발견 한 이유는 app.config를 찾고 있었기 때문에 web.config에서 세부 정보를 제공했기 때문입니다. 내 질문은 : 왜 system.configuration web.config 및 app.config 구별합니까? 이견있는 사람?

답변

7

실행 파일 :

여러 .NET 실행 파일이 같은 디렉토리에 살 수 있습니다. 동일한 디렉토리에 같은 이름의 파일이 두 개있을 수 없으므로 응용 프로그램은 기본 구성 파일에 다른 이름을 사용해야합니다. applicationName.exe.config 구성표가이를 해결합니다.

웹 애플리케이션/사이트 :

.NET 웹 응용 프로그램이 DLL을 컴파일하고, 웹 사이트는 일반적으로 적시 (just-in-time) 컴파일됩니다. 따라서 이러한 유형의 프로젝트에는 "주요 진입 점"이 없습니다. 각 페이지가 자체 어셈블리로 컴파일되는 웹 프로젝트를 만들 수 있습니다. 어느 것이 주 어셈블리입니까? 어떤 어셈블리에서 이름을 지정해야합니까?

다행히 하나의 웹 프로젝트 만 하나의 디렉토리에서 호스팅 할 수 있으므로 여기에는 하나의 기본 구성 파일 만 있습니다. 이렇게하면 규칙에 따라 주 구성 파일 이름을 선택할 수 있으며 파일 이름은 web.config이됩니다.

6

web.config은 웹 사이트 및 웹 응용 프로그램에만 적합합니다. 고정 된 상태로 유지됩니다. 즉 이름이 변경되지 않습니다. 항상 web.config이라고합니다.

app.config은 웹 응용 프로그램 (Winforms, WPF, NT Services 등)입니다. 프로젝트를 빌드하면이 이름이 YourApplicationName.exe.config으로 바뀝니다. 응용 프로그램의 디렉토리에서 해당 이름으로 app.config을 찾지 않습니다 (그렇지 않으면 사용되지 않습니다).

Microsoft는 두 가지 종류의 이름을 사용하기로 결정했습니다. - Microsoft에 문의하십시오.

기본적으로 상대방의 정보를 알고 올바른 위치에 정보를 제공해야합니다.

+1

+1, 아래에 내 대답에 ** 이유 ** 섹션에 관한 내 생각을 추가했습니다. –