대규모 애플리케이션의 .NET app.config 파일을 어떻게 관리합니까?

StackOverflow https://stackoverflow.com/questions/89245

  •  01-07-2019
  •  | 
  •  

문제

자체 어셈블리에 패키지된 여러 기본 구성 요소를 기반으로 구축된 대규모 복합 애플리케이션을 가정해 보겠습니다.(데이터베이스 읽기, 프로토콜 핸들러 등).일부 배포의 경우 20개가 넘는 어셈블리가 포함될 수 있습니다.이러한 각 어셈블리에는 설정 또는 구성 정보가 있습니다.우리 팀은 VS 설정 편집기(그리고 그것이 생성하는 사용하기 쉬운 코드!)와 애플리케이션과 VS 설정 편집기를 선호하는 경향이 있습니다.사용자 구별은 대부분의 요구 사항을 충족합니다.

하지만....

많은 구성 섹션을 애플리케이션의 .xml에 복사하여 붙여넣는 것은 매우 지루한 일입니다.또한 애플리케이션 전체에서 유사한 구성을 갖는 경향이 있는 공유 구성 요소의 경우 이는 여러 .config 파일에서 중복 설정을 유지해야 함을 의미합니다.

Microsoft의 EntLib은 괴물 .config 파일을 생성하는 외부 도구를 사용하여 이 문제를 해결하지만 이 역시 투박하게 느껴집니다.

여러 공유 어셈블리의 섹션이 포함된 대규모 .NET .config 파일을 관리하기 위해 어떤 기술을 사용합니까?어떤 종류의 포함 메커니즘이 있나요?사용자 정의 구성 리더?

후속 조치:

윌의 답변 내가 얻고 있는 것과 정확히 같았으며 플랫 키/값 쌍 섹션에 비해 우아해 보입니다.이 접근 방식을 다음과 결합할 수 있는 방법이 있습니까? 사용자 정의 구성 섹션 ?

다양한 빌드 대상에 대해 다양한 .config를 관리하는 방법에 대한 제안에도 감사드립니다.그것도 꽤 유용합니다.

데이브

도움이 되었습니까?

해결책

다른 구성 파일을 가리키는 하나의 마스터 구성 파일을 사용합니다. 이를 수행하는 방법에 대한 예는 다음과 같습니다.


링크가 썩는 경우, 당신이 할 일은 구성 소스 특정 구성 섹션의 경우.이를 통해 별도의 파일 내에서 특정 섹션을 정의할 수 있습니다.

<pages configSource="pages.config"/>

이는 전체 페이지를 포함하는 동일한 디렉토리 내에 "pages.config"라는 파일이 있음을 의미합니다. <pages /> 노드 트리.

다른 팁

제가 선호하는 방법은 MSBuild를 사용하는 것입니다. 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 '언로드'를 클릭하면 '편집'이라는 새 메뉴 옵션이 나타납니다.이를 선택하면 편집할 수 있도록 프로젝트 파일이 열리고 "AfterBuild"라는 주석 처리된 섹션을 찾을 때까지 아래로 스크롤합니다.

그런 다음 다음과 같은 것을 추가할 수 있습니다.

<Target Name="AfterBuild">
    <Delete Files="$(TargetDir)$(TargetFileName).config" />
    <Copy SourceFiles="$(ProjectDir)$(Configuration).config" DestinationFiles="$(TargetDir)$(TargetFileName).config" />
</Target>

그러면 애플리케이션 구성이 [Release|Debug]app.exe.config라는 구성으로 대체됩니다.따라서 프로젝트 빌드 방법에 따라 별도의 구성을 유지할 수 있습니다.

그러나 빠르고 더러운 옵션(msbuild를 사용하고 싶지 않은 경우)은 다음과 같이 별도의 구성 파일을 유지한 다음 포함할 파일을 정의하는 것입니다.

<appSettings configSource="Config\appSettingsDebug.config"/>
<roleManager configSource="Config\roleManagerDebug.config"/>

asp.net 응용 프로그램을 사용하는 경우 Microsoft는 이 모든 것을 쉽게 관리할 수 있는 "웹 배포 프로젝트"라는 훌륭한 유틸리티를 제공합니다. 여기를 클릭하세요

대규모 구성 세트를 관리하는 가장 좋은 방법은 사용자 정의 구성 섹션을 만드는 것입니다.Phil Haack은 이 기사에서 이에 대해 매우 훌륭하게 논의합니다. 간단한 3단계로 구성된 사용자 정의 구성 섹션

각 배포/테스트 환경에 대한 빌드 구성을 설정하고 각 빌드 구성에 따라 별도의 구성 파일을 사용합니다.

ScottGu는 좋은 게시물 이것에 대해 훌륭하게 작동합니다.우리가 가진 유일한 단점은 구성 파일(web.config)이 복사될 수 있도록 각 빌드 전에 TFS에서 편집하기 위해 체크아웃되었는지 확인해야 한다는 것입니다.

ConfigurationManager처럼 작동하지만 각 개별 어셈블리에 대해 .config를 로드하는 AssemblySettingsConfig 클래스를 만들었습니다.따라서 응용 프로그램에는 .config가 있고 응용 프로그램이 참조하는 모든 DLL에는 자체 .config 파일이 있습니다.지금까지 잘 해왔습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top