2012-12-14 2 views
0

데이터베이스에서 데이터 내보내기를 생성하는 콘솔 응용 프로그램을 만들었습니다. 이는 데이터베이스가 실행중인 위치와 다른 배치 서버에 배포해야합니다. app.config에서 데이터베이스에 connectionstring을 구성해야합니다. 이 콘솔 응용 프로그램을 배포해야하는 환경이 약 8 개 있습니다. 이제는 각 환경에 대한 원래 구성 파일을 저장하고 별도로 설치 폴더에 복사해야했습니다.다른 환경에 .NET 4.0 콘솔 응용 프로그램 배포

내가 아는 첫 번째 것은 파일을 Visual Studio의 설치 프로젝트에 추가하는 것이 었습니다. 기본 출력 옆에 모든 구성 파일에 조건 속성이 추가되었습니다. 설치 마법사 (텍스트 상자)에 화면을 추가하여 사용자에게 환경 이름을 입력하도록 요청했습니다. 이 설정 프로젝트 중 하나에서 성공적으로 구성되었지만 두 프로젝트에서 내 솔루션이 올바르지 않습니다. 그 중 나는 설치 프로젝트에서 만든 구성 파일이 아니라 설치 폴더에 항상 app.config 파일을 가지고 있습니다. 파일의 이름을 바꿀 때 설치 중에 정확한 세부 정보를 입력 할 때만 파일을 볼 수 있습니다. 그래서 내 생각 엔 내 프로젝트에서 app.config로 파일을 덮어 쓰는 것입니다.

내 설치의 빌드 결과 :

Building file 'C:\MyProject\MyProject.Setup\Deploy\MyProject.msi'... 
Packaging file 'MyProject.exe.config'... 
Packaging file 'MyProject.exe'... 
Packaging file 'MyProject.exe.config'... 
Packaging file 'MyProject.exe.config'... 

사람이 여기에 실패 무엇을 알고 있나요? 특별한 조건이나 설정이 필요합니까? 아니면 다른 배치 stragegy. 수동으로 구성 파일을 편집하는 것은 옵션이 아닙니다. 나는 모든 도움에 감사한다. 미리 감사드립니다.

답변

2

그것은 단지 연결 문자열에 대한 경우와 같은 당신의 폴더에 배포 두 번째 설정 파일에 대한 참조를 추가 :

<connectionStrings configSource="connectionstrings.config" /> 

또는 별도로 완전한 설정 파일을 배포하고 그것을로드 당신의 응용 프로그램과 마찬가지로 :

var map = new ExeConfigurationFileMap {ExeConfigFilename = @"C:\MyProject\custom.config"}; 
Configuration config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);