2011-04-05 2 views
1

구성해야하는 .config 파일이 2 개 있습니다. 하나는 web.config이고 다른 하나는 app.config입니다.이 두 파일은 우리 코드가 내부에서 실행되는 타사 공급 업체의 것입니다. 따라서 코드를 조정할 수 있도록 조정해야합니다.업데이트 타사의 .config 변환이 설치 프로그램에서 제공

제 계획은 .config 파일을 가져 와서 타사의 파일로 병합하는 것이 었습니다.

이 유형의 작업을 msbuild와 함께 수행하는 방법에 대한 몇 가지 예를 보았습니다.하지만 사이트에서이 작업을 수행하고 있으므로 설치 프로그램을 사용하여 작업해야합니다. 어떤 도움을 주시면 감사하겠습니다.

예 : 우리는 함께 시작 :

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <runtime> 
    <gcServer enabled="true"/> 
    </runtime> 
</configuration> 

사용자 정의 섹션

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    <section name="productName" type="company.productName, company, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d9072a6c5128d57c" /> 
    </configSections> 
    <productName defaultProvider="Provider1"> 
    <providers> 
     <clear /> 
     <add name="Provider1" type="Company.Product.Authentication.Provider1, Company.Product, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d9072a6c5128d57c" hostName="localhost:5555" /> 
     <add name="Provider2" type="Company.Product.Authentication.Provider2, Company.Product, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d9072a6c5128d57c" hostName="demo.example.com" /> 
    </providers> 
    </productName> 
</configuration> 

그리고 끝나는 :

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    <section name="productName" type="company.productName, company, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d9072a6c5128d57c" /> 
    </configSections> 
    <productName defaultProvider="Provider1"> 
    <providers> 
     <clear /> 
     <add name="Provider1" type="Company.Product.Authentication.Provider1, Company.Product, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d9072a6c5128d57c" hostName="localhost:5555" /> 
     <add name="Provider2" type="Company.Product.Authentication.Provider2, Company.Product, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d9072a6c5128d57c" hostName="demo.example.com" /> 
    </providers> 
    </productName> 
    <runtime> 
    <gcServer enabled="true"/> 
    </runtime> 
</configuration> 
+1

변환은 단지 하나의'configuration'의 자식을 다른 것으로 복사하는 것이겠습니까? –

+0

@Alejandro : 추가하지 않으면 올바른지 확인하십시오. 그렇다면 그대로 두십시오. –

+0

그건 내가 쓴 것이 아니야. 당신은'그것이 있는지 확인하고'혼자 남겨 두는 것의 의미가 무엇인지 명확히해야합니다. –

답변

1

이 스타일 :

,522,288,297 53,210 이 입력으로

:

<configuration> 
    <runtime> 
     <gcServer enabled="true"/> 
    </runtime> 
</configuration> 

그리고이 test.xml :

<configuration> 
    <configSections> 
     <section name="productName" type="company.productName, company, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d9072a6c5128d57c" /> 
    </configSections> 
    <productName defaultProvider="Provider1"> 
     <providers> 
      <clear /> 
      <add name="Provider1" type="Company.Product.Authentication.Provider1, Company.Product, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d9072a6c5128d57c" hostName="localhost:5555" /> 
      <add name="Provider2" type="Company.Product.Authentication.Provider2, Company.Product, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d9072a6c5128d57c" hostName="demo.example.com" /> 
     </providers> 
    </productName> 
</configuration> 

출력 :

<configuration> 
    <configSections> 
     <section name="productName" type="company.productName, company, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d9072a6c5128d57c"></section> 
    </configSections> 
    <productName defaultProvider="Provider1"> 
     <providers> 
      <clear></clear> 
      <add name="Provider1" type="Company.Product.Authentication.Provider1, Company.Product, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d9072a6c5128d57c" hostName="localhost:5555"></add> 
      <add name="Provider2" type="Company.Product.Authentication.Provider2, Company.Product, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d9072a6c5128d57c" hostName="demo.example.com"></add> 
     </providers> 
    </productName> 
    <runtime> 
     <gcServer enabled="true"></gcServer> 
    </runtime> 
</configuration> 

: 세 가지 규칙. 문서 루트 규칙 : 트래킹 트리를 업데이트가 필요한 소스로 변경하고 입력 소스를 $pContext으로 유지합니다. 요소가있는 요소 자식 규칙 : 특성이있는 자체 복사, $pContext의 특성을 가진 특성 업데이트 (creating attributes rules이므로 프로세서에서 수행 함), 새 노드 $pContext (동일한 자식 이름이 이전 $pContext 인 자식)에 템플릿을 적용하고 템플릿을 $pContext 님의 자녀 이름과 일치하지 않습니다. 요소가없는 요소 자식 규칙 : 속성이 $pContext 속성으로 업데이트 된 채로 복사합니다. 노드가 $pContext이면 복사하여 요소 내용을 대체합니다 (또는 빈 요소가 $pContext 인 경우 제거).

+0

도와 주셔서 감사합니다! –

+0

위대한 일을했다면 어떻게 작동하는지 조금 설명 할 수 있다면 정말 최고 일 것입니다! –

+0

@Matt Heffernan : 천만에요! 나는 돌아와서 설명을 추가 할 것이다. –

관련 문제