2011-11-10 2 views
1

Visual Studio 2010의 설정 편집기를 사용하여 .NET 4 web.config 파일의 섹션에서 설정을 추가/편집/제거합니다. 여기 Visual Studio의 설정 편집기를 사용하면 web.config에서 주석이 손실되지 않도록 방지 할 수 있습니까?

가 (매우 모호한) 예 내 말은 비트 설명하기 위해 추출의 : 위의 예에서

<applicationSettings> 
    <Animals.My.MySettings> 
     <!-- Specify the type of animal this website is dedicated to... --> 
     <setting name="AnimalType" serializeAs="String"> 
     <value>Monkey</value> 
     </setting> 
    </Animals.My.MySettings> 
    </applicationSettings> 

를, 코멘트는 웹 한번 예를 들어 수동 현장 설정 파일을 편집하는 사람 (유용하다 응용 프로그램이 고객 사이트에 배포 된 경우). 그러나 VS 설정 편집기를 사용하면 설정을 추가/편집/제거 할 때마다 주석이 손실됩니다.

지금까지, 나는 다음과 같은 작업 차선책을 마련했습니다

  1. 나는 결코은 VS 설정 편집기를 사용하지,하지만 난 피하기 위해 우리 팀에게해야 할 것 를 선택할 수 있습니다 그것도, 그리고 항상 누군가가 잊어 버리고 우리의 모든 의견을 잃는 한 번만있어 ...

  2. 나는 web.config의 사본을 별도로 보관할 수 있으며, 주석이 들어있다. 그런 다음 설정 파일의 사본으로 응용 프로그램을 출시합니다 ... (두 번째 복사본을 최신 상태로 유지해야한다는 것을 의미하므로이 아이디어가 마음에 들지 않습니다. 기억해야합니다. 설정 파일을 릴리즈 할 때 ... 너무 많이 기억하면 너무 많이 잘못 될 수 있습니다.)

  3. 열기 태그 위의 주석을 추가하는 것이 좋습니다. 상단에 모든 주석을 추가 할 수 있습니다.

내 질문에 :이 문제를 해결하려면 가장 좋은 방법은 무엇입니까? 추천 메뉴가 무엇인가요?

+0

옵션 2가 실제로 최선의 방법 일 수 있습니다. 실수로 dev 환경 설정을 프로덕션 고객에게 배송 할 위험이 있습니까? –

답변

1

옵션 1과 2는 같은 문제로 고통 ... 나는이 대답에 게시 사용의 예를 살펴 : 팀 훈련을. 1은 스튜디오 편집자를 사용할 수 없음을 의미하고 2는 "주석"구성을 동기화 상태로 유지해야한다는 것을 의미합니다.

개인적으로, 처음에는 강제 적용이 쉽고 소스 제어를 사용하는 경우 가해자가 누구인지는 분명합니다.

+0

불행하게도 우리는 소스 컨트롤을 사용하지 않습니다 ... 아직 ... (http://programmers.stackexchange.com/questions/112270/is-it-unusual-for-a-small-company-15-developers- not-to-use-managed-source-vers)! 나는 그것에 노력하고있다! – LordScree

+0

@LordScree : 그냥 질문을 읽어보십시오. 내가 말할 수있는 것은 와우와 행운이다. 유사한 행동 문제가 발생할 수도 있습니다. – NotMe

+1

@LordScree, 소스 제어에 관한 질문을 읽으면서, 당신이해야 할 가장 좋은 일은 cv를 업데이트하는 것이라고 생각합니다. 그 회사는 더 이상 오래있을 수 없습니다. –

1

ConfigGen을 사용하여 환경 별 주석을 포함하여 모든 환경 별 구성을 생성하는 것이 좋습니다. 이 페이지의 예제는 좋은 아이디어를 줄 수 있습니다.

기본적으로 토큰 화 된 자리 표시 자 및 각 배치 환경 또는 dev 시스템에 대한 행이있는 설정 파일을 사용하여 모든 환경에 대한 구성을 편집 할 단일 위치를 제공합니다. 주석을 기계별로 또는 부울 조건을 사용하여 시스템에 포함/제외 할 수 있습니다.

또한,

How to select different app.config for several build configurations

+2

+1 왜냐하면 ConfigGen이 트릭을 수행하는 것 같지만 빵을 슬라이스하기 위해 대검을 사용하는 것과 조금 비슷합니다. 당신은 얇게 썰 렸던 빵을 얻습니다. 그러나 어딘가에서 위대한 단어를 찾아야 만합니다. 건강과 안전 문제가 많이 있습니다 ... – LordScree

+0

+1 재미있는 댓글을 달았습니다. 그러나 나는 그것을 더 잘 맞는 칼이나 감자 껍질 벗기는 사람처럼 느낍니다. –

0

내 해결 방법 - 여기에 의견이있는 .config 파일의 일부입니다

<setting name="Database" serializeAs="String"> 
<value>DBNAME</value> 
</setting> 
<setting name="ProgramPath" serializeAs="String"> 
<value>C:\Program Files (x86)\Vendor\Program V 11.1\prog.exe:: the P21 client - KEEP SPACE in a comment will not remove spaces from the value</value> 
</setting> 
<setting name="Directory" serializeAs="String"> 
<value>\\Server\Share\Subdir :: where the files will be created</value> 
</setting> 
<setting name="FileIDs" serializeAs="String"> 
<value>DoThis, ThenThis :: DoThis or ThenThis or both comma separated - anything after two colons is a comment and is ignored</value> 
</setting> 

이 VB.NET 기능은 주석을 제거합니다 및 기본 공백

를 내장 제거합니다으로는

Function Run(S As String) As String 
    Dim L As Integer = InStr(S, "::") 
    If L = 0 Then 
     Return S.Replace(Space(1), String.Empty) 
    Else 
     If InStr(S, "KEEP SPACE") = 0 Then 
      Return S.Substring(0, L - 1).Replace(Space(1), String.Empty) 
     Else 
      Return S.Substring(0, L - 1) 
     End If 
    End If 
End Function 

관련 문제