2013-03-23 2 views
17

내 app.config 파일에 다음과 같은 내용이 있습니다. 나는 Slow Cheetah를 사용하고 있으며, 대체 설정/entityFramework/defaultConnectionFactory/parameters/매개 변수를 대체하여 diff 서버를 가리키고 싶습니다. 나는이 (가) app.config.release에하지만 아무 소용이 다음에 시도이 노드를 변형하기위한 올바른 xdt : Locator 매개 변수는 무엇입니까?

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
    </configSections> 
    <appSettings> 
    </appSettings> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" /> 
    </startup> 
    <entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"> 
     <parameters> 
     <parameter value="data source=.;Integrated Security=SSPI;Initial Catalog=SomeDb;MultipleActiveResultSets=true" /> 
     </parameters> 
    </defaultConnectionFactory> 
    </entityFramework> 
    <system.web> 
    <membership defaultProvider="ClientAuthenticationMembershipProvider"> 
     <providers> 
     <add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" /> 
     </providers> 
    </membership> 
    <roleManager defaultProvider="ClientRoleProvider" enabled="true"> 
     <providers> 
     <add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" /> 
     </providers> 
    </roleManager> 
    </system.web> 
</configuration> 

즉 가치 데이터 소스 = 일부 서버 ....

<entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"> 
     <parameters> 
     <parameter value="data source=dbserver;Integrated Security=SSPI;Initial Catalog=someDb;MultipleActiveResultSets=true" 
        xdt:Transform="Replace" 
        xdt:Locator="XPath(configuration/entityFramework/defaultConnectionFactory/parameters/parameter)" /> 
     </parameters> 
    </defaultConnectionFactory> 
    </entityFramework> 

xdt:Locator="Match(parameter)"xdt:Locator="XPath(parameter)

그리고 더 많은 시도하지만이 동작하지 않습니다.

답변

28

확인. 약간 바보 같지만 해결책은 xdt : Locator를 지정할 필요가 없다는 것입니다.

방금 ​​App.Release.Config를 그대로두면 일치하는 항목이 대체됩니다.

<parameter value="data source=dbserver;Integrated Security=SSPI;Initial Catalog=someDb;MultipleActiveResultSets=true" 
       xdt:Transform="Replace"/> 
    </parameters> 
+9

바보 같은 느낌이 들지 마세요. 설명서에 대한 정보가 전혀 없습니다. 조사 결과를 게시 해 주셔서 감사합니다. –

+0

에도 동일한 문제가있었습니다. 그 중 하나는 일치하는 데 사용할 이름이 없으므로 방금 대체 방법을 사용했습니다. –

+0

@TobyJ - 설명서가 명확하지 않을 수도 있지만 생각할 때 기본 위치 일치를 조정하는 데 도움이되는 로케이터입니다. 아무것도주지 않으면 요소의 계층 구조가 사용됩니다. (체인을 따라 변형 된 모든 조상 요소에 xdt : Locator를 부여해야하는 경우가 아니라면) – arviman