2

저는 소규모 개발 팀의 일원이며 현재 동일한 개발 데이터베이스를 공유하는 모델에서 우리 자신의 개인 개발 데이터베이스가있는 모델로 이동하고 있습니다..net .config 파일을 동적으로 사용자 지정하는 방법

이 때문에 우리는 웹 및 app .config 파일을 관리하여 개별 데이터베이스를 수용하는 방법을 알아 내려고 노력하고 있습니다. 우리는 모든 사람들이 자신의 데이터베이스를 가리 키도록 연결 문자열을 수동으로 변경 한 다음 다시 체크인하기 전에 다시 변경해야한다는 상황을 피하고자합니다.

거의 모든 개발 팀이 직면하는 매우 일반적인 문제라고 확신합니다. 그럼에도 불구하고, 나는이 문제에 대한 해결책을 찾을 수 없다.

xdt 구문을 사용하는 web.config 변환에 익숙하며 파일 수정에 도움이되지만 외부 매개 변수 값을 주입하는 방법은 제공하지 않습니다. 예를 들어, 현재 사용자를 감지하고 .config 파일의 데이터베이스 이름을 사용자 이름이 들어있는 파일 이름으로 바꾸려면 변환이 필요합니다.

그래서 개발 팀에서이 문제를 어떻게 해결할 수 있습니까?

감사합니다.

편집 :

미안 해요, 허용되는 것을이 답을 방지 할 정보의 상당히 중요한 부분을 놓쳤다. 회사로서 우리 모두는 원격 및 원격 데스크톱을 개발 환경에 적용합니다. 우리는 효과적으로 모든 개발자가 동시에 개발 및 사용하는 하나의 (강력한) 개발 시스템을 보유하고 있습니다. 따라서 별칭을 사용하거나 호스트 파일을 수정하는 등 모든 사용자에게 동일하게 적용되며 필요한 개별 사용자 정의를 제공하지 않습니다. SQL 인스턴스는 이미 로컬 인스턴스이며 모든 개발자가 사용하는 컴퓨터의 로컬 인스턴스입니다.

답변

1

이 작업을 수행하는 두 가지 방법을 제안 할 수 있습니다.연결 문자열이 일치 될 수 있도록

  1. 당신이 당신의 호스트에 다음 줄을 넣어하여이 작업을 수행 할 수 있습니다, 데이터베이스 서버 이름 같은 별칭을 사용하여 파일 :

    127.0.0.1의 DBSERVER

  2. 연결 문자열을 외부 파일에 넣고 소스 컨트롤에 추가하지 마십시오. 스테이징 및 릴리스 구성의 경우 웹 구성 변환을 통해 필수 연결 문자열을 추가 할 수 있습니다. 당신의 Web.config은 다음과 같이됩니다 두 번째 경우

:

<connectionStrings configSource="connectionStrings.config"></connectionStrings> 

편집 : connectionStrings.config 파일이 같은 폴더에 위치하지만, 소스 제어에서 무시 목록에 추가됩니다 있도록 각 개발자는이 파일의 사본을 소유하게되며 변경 사항은 다른 개발자에게 영향을 미치지 않습니다. 작업을 단순화하기 위해 템플릿으로 사용할 수있는 connectionStrings.config.default 파일을 만들 수 있습니다. 그러면 새 개발자가 프로젝트에 참여할 때이 파일을 기반으로 자신의 connectionStrings.config 사본을 기본값으로 만들 수 있습니다. 필요한 경우

+0

감사합니다. 내 편집을 참조하십시오. 이유는 이것이 우리의 상황에 도움이되지 않는 이유입니다. – Martyn

+0

알았어. 하지만 두 번째 접근 방식을 좋아하는 이유는 무엇입니까? 내가 아는 한, 같은 컴퓨터 개발자가 자신의 소스 코드 복사본을 가지고 있지만 이해하지 못하는가? –

+0

네,하지만 같은 문제, 각 개발자는 자신의 개별 연결 파일을 가리 키도록 소스 코드를 사용자 정의해야합니다. 이 솔루션은 문제를 web.config 파일에서 다른 새로운 파일로 효과적으로 이동시킵니다. - 아마도 이걸 이해하지 못 하겠지만,이 외부 파일을 어떻게 설정할 것인지, 어떻게 소스에 액세스 할 수 있는지에 대해 더 설명 할 수 있습니까? 감사! – Martyn

0

옵션은 명명 된 연결 문자열을 사용하고 web.config 대신 machine.config에 정의 된 이러한 연결 문자열을 사용할 수 있습니다.

+0

감사합니다 : 예를 들어

우리가 Web.config의 모든 설정 "tester1"가 다음 개발자가 로컬 SQL 서버에 별칭을 설정, 여기에 이미지 이 상황에서 machine.config를 수정하면 도움이되지 않는 이유가 설명됩니다. – Martyn

0

이 문제에 대한 일반적인 해결책은 각 사용자 개발 컴퓨터에 개발 데이터베이스를 두어 모든 사람에게 동일한 연결 문자열을 지정할 수 있도록하는 것입니다. SQL Server에 대한이 같은 것입니다 :이 작업을 수행 할 때

connectionString="data source=.\SQLExpress;..." 

가 최신 데이터베이스가 각 개발자가 원하는을, 그래서 당신은 정말 정말 쉽게 (SQL 서버 만들기 비주얼 스튜디오 2010 데이터베이스 프로젝트를 봐야한다 그래도).

+0

감사합니다. 왜이 상황이 우리 상황에 도움이되는지 설명하는 편집 내역을 참조하십시오. – Martyn

0

우리가 사용하는 기술은 개발 컴퓨터에서 데이터베이스 이름, 서버 이름 (명명 된 인스턴스 없음), 사용자 이름 및 암호를 표준화하는 것입니다. 데이터베이스 = 에어로; UID = 비행기, 제품의 코드 네임은 에어로 경우

그래서 우리는

서버 = (로컬) 사용하십시오 암호 = 암호를

dev에 대한

은 '보안 ISN을 환경 중요하지만 일관성이 있으며,이 기술은 다른 사람의 app/web.configs를 체크 아웃하고 해독하는 것을 방지합니다.

+0

감사합니다.이 편집 방법이 우리 상황에서 유용하지 않은 이유를 설명하는 질문에 대한 편집 내역을 참조하십시오. – Martyn

0

우리는 (로컬 dev에, 테스트, 릴리스)를 사용 데이터베이스를 정의하는 Web.config의 변환을 사용하고 있지만, 모든 개발자는 로컬 SQL 서버를 사용할 수 있습니다. 우리는 SQL 서버 별칭을 설정하고 웹 구성 연결 문자열이 동일하며 개발자가 해당 컴퓨터에서 별칭을 설정함으로써이를 수행합니다. 질문에 내 편집을 참조하십시오

enter image description here

+0

감사합니다. 왜 우리 상황에서는 도움이되지 않는 이유에 대해 설명하는 편집을 참조하십시오. – Martyn

관련 문제