6

PHP와 일부 레일 배경에서 오는 ASP.Net MVC 2를 배우고 있으며, 나에게 보이는 유일한 것 중 하나는 연결 문자열과 같은 구성 설정을 관리하는 방법입니다 , 또는 외부 서비스에 대한 엔드 포인트를 지정합니다.ASP.Net MVC 2의 다중 환경

필자의 이전 회사에서 사용한 PHP 프레임 워크에는 설정 파일에 대한 표준 형식 및 규칙이 있습니다. 우리 회사는 이것을 활용하여 환경 변수 (Apache 구성에서 설정 한)를 기반으로 다른 구성 파일을로드 할 수있었습니다. 따라서 환경에 따라 설정을 변경하는 작업이 매우 간단하고 자동으로 이루어졌습니다. 내가 아는 한, Rails에는이 기능의 일부 버전이 내장되어 있습니다.

닷넷 세계의 app.configweb.config 파일에 익숙하지만 환경에 따라 이러한 변경을 가능하면 자동으로 다양하게 세분화 할 수있는 방법이 있습니까? 전체 구성 시스템은 필자가 익숙한 것과 비교하면 매우 빈약 해 보입니다.

아마도이 작업을 수행하기 위해 뭔가를 해킹 할 수는 있지만 사람들이 실제로 어떤 접근 방식을 사용하고 있는지 또는 사람들이 사용하고있는 표준 도구가 있는지 알고 싶었습니다.

+0

+1 멋진 주제에 대해 –

답변

1

당신은 이런 식으로 뭔가를 시도 할 수 :

+0

의견에 제안 된 해결책과 함께 그 가능성이 가장 높습니다. – notJim

+0

@notJim 나는 이것을 약 1 년 동안 프로젝트에서 사용 해왔고, 많은 도움이되었습니다. 유일한 문제는 배포 할 때 올바른 구성을 선택하는 데 신중해야한다는 것입니다. 그러나 빌드 및 배포 프로세스를 자동화하기위한 좋은 단계입니다. – CGK

0

"Debug"vs "Release"모드에서 환경을 실행할 수 있습니다. PHP의 레일즈와 유사한 규칙에서 변수는 ENV인데 분명히 장점 중 하나입니다. 어떤 선택과도 같이 항상 theres는 떨어져 무역하고 그들 중 하나 thats. 제가 레일에있을 때 여러분의 ENV 변수 (test, dev, production ...)를 적절한 보석 등으로로드 할 수있는 능력에 감사 할 수 있습니다. 그 위대한. 내가 레일에있을 때, VS intellisense와 아마도 상당한 차이가있을 수 있습니다. 말했다

, WebConfigs 쉽게 다른 개발자와 서버 등 사이에 전달 될 수 있도록 내가 본 몇 가지 트릭 적절한 연결 문자열로의 MachineName 속성에서 코딩 등되었습니다 ...

3

web.config transformations 있습니다.

내가 틀릴 수도 있지만 Visual Studio 내에서 "디버깅 시작 (F5)"버튼을 사용하여 응용 프로그램을 시작한 경우 응용 프로그램이 시작되지 않을 것이라는 점을 상기 한 것 같습니다. 사용.

+0

맞습니다. 방금 빌드 할 때 해당 변환이 적용되지 않습니다. MSBuild를 사용하여 수동으로 실행하거나 Visual Studio 내에서 패키지를 만들어야합니다. 어쩌면'.csproj'는 post-build 액션으로서 변환을 수행하도록 수정 될 수 있습니다. – notJim

0

Managing Multiple Configuration File Environments with Pre-Build Events가 개인적으로 나는 환경의 특정 설정을 관리 할 수 ​​machine.config를 사용합니다. 이 파일에는 기계 별 설정이 들어 있습니다.

각 환경에 전용 컴퓨터가 없지만 IIS에서 다른 웹 사이트를 사용하는 경우 환경 별 설정이 포함 된 각 웹 사이트의 루트에 루트 web.config 파일을 둘 수 있습니다.

기본적으로이 전역 구성 파일에는 SQL Server, 웹 서비스 서버 등의 이름이 들어있는 키/값 쌍이 있습니다. 환경에 따라 다르며 응용 프로그램에서 최종 연결 문자열을 구성하는 데 사용합니다 , http 웹 주소, ...

일단 전역 구성 설정이 완료되면 모든 환경에서 web.config와 똑같은 응용 프로그램 파일을 배포 할 수 있습니다.

관련 문제