2010-01-26 5 views
1

누구든지 asp.net mvc 웹 사이트의 개발 및 라이브 빌드 간을 쉽게 전환 할 수있는 좋은 기술이 있습니까? 몇 가지 변경 사항을 수행 할 때마다 web.config를 통해 변경하고 모든 로컬 설정을 주석 처리하고 모든 원격 설정의 주석 처리를 제거해야합니다. 또한 올바른 연결 문자열을 가리 키도록 linq-to-sql dbml 파일을 업데이트해야합니다.개발 버전과 라이브 버전 간 전환

이것은 컨트롤러를 변경할 때마다 발생합니다. 변경 사항을 업로드 한 후 동일한 프로세스를 수행하고 개발 (로컬) 모드로 되돌려 야합니다.

자동으로 처리 할 수 ​​있습니까? 아니면이 두 가지 사이에 플래그를 지정할 수있는 설정이 하나 이상 있습니까? 그런 다음 구성 정보를 읽어 내 수업에서, 나는 시스템 환경 같은 것을 확인 것

<LiveSomeSetting>something</LiveSomeSetting> 
<TestSomeSetting>anotherthing</TestSomeSetting> 

감사

+0

당신이 두 버전을 배포 빌드 프로세스를 가진 것으로 간주 한을? –

+0

MSI 또는 xcopy를 사용합니까? 두 가지 다른 설정 파일 인 web.config와 production_web.config를 가질 수 있다고 생각합니다. 설정 중에 설정을 바꾸면됩니다. –

+0

msi 또는 xcopy는 어떻게 사용합니까? 나는 visual studio 2008 웹 익스프레스를 사용한다. – chobo

답변

1

내가했던 방법은/구성 설정의 두 그룹을 만드는 것입니다 컴퓨터 이름과 라이브 컴퓨터의 이름에 해당하는 경우 설정을 확인하십시오 ... 그렇지 않으면 개발.

if (System.Environment.MachineName.ToLower().StartsWith("devMachineName")) 
    IsLive = "Test"; 
else 
    IsLive = "Live"; 

Application["IsLive"] = IsLive; 
SomeSetting = ConfigurationManager.AppSettings[IsLive + "SomeSetting"]; 
+0

언제, 어떻게 수업을 참조합니까? global.asa에서 온 것입니까? – chobo

+0

예 .. 애플리케이션 시작 중 Global.asax에서 구성 설정을보고 "글로벌"변수에 저장하지만, 앱의 다른 위치 또는 다른 객체에 저장할 수 있습니다. – DRapp

+0

전역 변수를 사용하는 데 보안 위험이 있습니까? 누군가가 연결 문자열을 잡을 수 있습니까? – chobo

0

나는 Scott Hanselman이 97 년에 블로그에 올린 간단한 기술을 사용합니다. 기본적으로 각각의 빌드 유형에 대해 별도의 web.config 파일을 유지 관리해야합니다. 그런 다음 올바른 web.config를 제 위치에 복사하는 사전 빌드 이벤트가 있습니다.

2 개 이상의 web.config 파일을 유지해야하는 단점이 있지만 일단 실행하고 나면 실제로 그렇게 큰 문제는 아닙니다.

기사 여기를 보라 :
Managing Multiple Configuration File Environments with Pre-Build Events

HTHs,
찰스