Web.config 변환을 사용하여 appSettings 섹션에서 속성 값을 변경하는 방법


260

다음 Web.config appSettings 파일을 변환 할 수 있습니까?

<appSettings>
    <add key="developmentModeUserId" value="00297022" />
    <add key="developmentMode" value="true" />
    /* other settings here that should stay */
</appSettings>

이런 식으로 :

<appSettings>
    <add key="developmentMode" value="false" />
    /* other settings here that should stay */
</appSettings>

그래서, 나는 키 제거해야 developmentModeUserId을 , 나는 키에 대한 값을 교체 할 필요가 developmentMode .

답변:


452

당신은 다음과 같은 것을 원합니다 :

<appSettings>
  <add key="developmentModeUserId" xdt:Transform="Remove" xdt:Locator="Match(key)"/>
  <add key="developmentMode" value="false" xdt:Transform="SetAttributes"
          xdt:Locator="Match(key)"/>
</appSettings>

참조 : 웹 응용 프로그램 프로젝트 배포에 대한의 Web.config 변환 구문


24
키는 대소 문자를 구분합니다.
Cosmin

2
훌륭한 답변입니다. 나는 Slow Cheetah와 같은 타사 옵션을 시도했지만 아무데도 가지 못했습니다. 이것은 간단하고 완벽했습니다.
Steve

2
@ stevens : 네이티브 응용 프로그램의 app.config 파일을 변환하려면 Slow Cheetah가 필요합니다. 그러나 내가 기억한다면 구문은 동일해야합니다 (Slow Cheetah를 사용해야했기 때문에 오래되었습니다).
Ellesedil

느린 사기꾼에 대한 대안은 myotherconfig.staging.config 및 web.Staging.config 변환을 작성하여 web.config에서 myotherconfig.config로 참조를 변환하는 것입니다.
nologo

3
일부 사람들에게 도움이 될 수있는 약간의 설명 : xdt:Transform="SetAttributes" xdt:Locator="Match(key)"Web.config 파일이 아니라 Web.Whatever.config에서 해당 부분을 사용해야합니다.
user3533716

11

모든 AppSettings 교체

이것은 web.config의 전체 섹션을 바꾸려는 과잉 사례입니다. 이 경우 web.config의 모든 AppSettings를 web.release.config의 새 설정으로 바꿉니다. 이것은 내 기본 web.config appSettings입니다.

<appSettings>
  <add key="KeyA" value="ValA"/>
  <add key="KeyB" value="ValB"/>
</appSettings>

이제 web.release.config 파일에서 전체 요소를 바꾸고 싶기 때문에 xdt : Transform =”Replace”속성을 포함하는 것을 제외하고 appSettings 섹션을 만들 것입니다. 찾을 위치가 없기 때문에 xdt : Locator를 사용할 필요가 없었습니다. 슬레이트를 깨끗하게 닦고 모든 것을 교체하고 싶습니다.

<appSettings xdt:Transform="Replace">
  <add key="ProdKeyA" value="ProdValA"/>
  <add key="ProdKeyB" value="ProdValB"/>
  <add key="ProdKeyC" value="ProdValC"/>
</appSettings>

web.release.config 파일에서 내 appSettings 섹션에는 두 개 대신 세 개의 키가 있으며 키는 동일하지 않습니다. 이제 생성 된 web.config 파일을 게시 할 때 어떤 일이 발생하는지 살펴 보겠습니다.

<appSettings>
   <add key="ProdKeyA" value="ProdValA"/>
   <add key="ProdKeyB" value="ProdValB"/>
   <add key="ProdKeyC" value="ProdValC"/>
 </appSettings>

예상 한대로 – web.config appSettings는 web.release 구성의 값으로 완전히 대체되었습니다. 그것은 쉽다!


9

웹 설정 파일에서 web.Release.config로 앱 설정을 변환하려면 다음 단계를 수행해야합니다. web.config 앱 설정 파일을 다음과 같이 설정하십시오.

<appSettings>
     <add key ="K1" value="Debendra Dash"/>
  </appSettings>

이제 변환을위한 web.Release.config가 있습니다.

<appSettings>
    <add key="K1" value="value dynamicly from Realease"
       xdt:Transform="SetAttributes"
          xdt:Locator="Match(key)"   
         />
  </appSettings>

이렇게하면 실수 모드에서 K1 값이 새 값으로 변환됩니다.


1

필요한 것보다 더 많은 정보를 갖는 변환을 좋아하지 않습니다. 따라서 키를 쉬는 대신 상태의도를 간단히 설명합니다 . 적어도 IMO와 같이 이렇게 할 때 의도를 확인하는 것이 훨씬 쉽습니다. 또한 xdt독자에게 알리기 위해 모든 속성을 먼저 배치하려고 시도합니다. 이러한 속성은 새로운 것으로 정의 된 것이 아니라 변형입니다.

<appSettings>
  <add xdt:Locator="Condition(@key='developmentModeUserId')" xdt:Transform="Remove" />
  <add xdt:Locator="Condition(@key='developmentMode')" xdt:Transform="SetAttributes"
       value="false"/>
</appSettings>

위에서 첫 번째 요소가 요소를 제거하고 있음을 훨씬 쉽게 알 수 있습니다. 두 번째는 속성을 설정하는 것입니다. 여기에 정의한 속성이 설정 / 대체됩니다. 이 경우 단순히로 설정 value됩니다 false.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.