Visual Studio 2013 Premium 사용.Web.Config transforms : Insert()를 사용하여 여러 요소 변환
목표 : web.config에 여러 개의 WCF 서비스가 정의되어 있습니다. web.config 파일을 읽기 쉽게 유지하고 서비스를 더 간단하게 만들기 위해 VS2013의 XML 변환을 사용하여 내 dev/production 환경의 각 서비스 정의에 상용구 요소를 추가하고 싶습니다.
문제점 : 여러 개의 <service>
태그가 있지만 첫 번째 태그 만 제대로 변환됩니다.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<services>
<service name="AppName.AccountManagerService">
<endpoint address="AccountManagerService" binding="netTcpBinding"
bindingConfiguration="" contract="Shared.Contracts.IAccountManagerService" />
</service>
<service name="AppName.TicketManagerService">
<endpoint address="TicketManagerService" binding="netTcpBinding"
bindingConfiguration="" contract="Shared.Contracts.ITicketManagerService" />
</service>
</services>
</configuration>
(도시하지 않음) 각 <service>
태그 :
여기에 정의 된 두 가지 서비스 내의 Web.config의 단순화 된 버전입니다. 나는이 얻을
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.serviceModel>
<services>
<service xdt:Locator="XPath(/configuration/system.serviceModel/services/service)">
<endpoint kind="mexEndpoint"
address="mex"
xdt:Transform="Insert()"
/>
</service>
</services>
</system.serviceModel>
</configuration>
:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.serviceModel>
<services>
<service name="AppName.AccountManagerService">
<endpoint address="AccountManagerService" binding="netTcpBinding"
bindingConfiguration="" contract="Shared.Contracts.IAccountManagerService" />
<!-- Yay! -->
<endpoint kind="mexEndpoint"
address="mex"
/>
</service>
<service name="AppName.TicketManagerService">
<endpoint address="TicketManagerService" binding="netTcpBinding"
bindingConfiguration="" contract="Shared.Contracts.ITicketManagerService" />
<!-- Hey, where's the endpoint tag for this one? -->
</service>
</services>
</configuration>
내가 xdt:Locator
속성에 XPath
인수에 이러한 변화를 시도했습니다 여기
1. /configuration/system.serviceModel/services/service
2. /configuration/system.serviceModel/services//service
3. //service
hich 변환 첫 번째 <service>
섹션.
나는 <endpoint>
태그 등에 속성을 넣어 봤지만 아무 소용이 없습니다.
XPath 비주얼 라이저 및 도구가 여러 개 있습니다. 위의 XPath # 1과 함께 사용할 경우 모두<service>
태그와 일치합니다. 또한이 오류는 "미리보기 변형"및 웹 배포 도구 미리보기에서 발생합니다.
내가 뭘 잘못하고 있니?
(내 해결 방법은이 시점에서 원래의 Web.Config에 Mex 엔드 포인트와 나머지 디버깅 크루프를 포함시킨 다음 "RemoveAll()"로 제거하는 것이지만 Web.Config를 만듭니다. 정말 어수선하고 읽기가 어렵습니다.)