Web.config 변환을 사용하여 appSettings 섹션에서 속성 값을 변경하는 방법 should stay */ </appSettings> 이런 식으로 : <appSettings>

다음 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 .



답변

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

<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 변환 구문


답변

모든 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 구성의 값으로 완전히 대체되었습니다. 그것은 쉽다!


답변

웹 설정 파일에서 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 값이 새 값으로 변환됩니다.


답변

필요한 것보다 더 많은 정보를 갖는 변환을 좋아하지 않습니다. 따라서 키를 쉬는 대신 상태의도를 간단히 설명합니다 . 적어도 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.