다음 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>
답변
모든 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
.