Замена WebConfig CruiseControl.Net

#web-config #web-deployment-project #ccnet-config

#web-config #веб-развертывание-проект #ccnet-config

Вопрос:

Мне приходится развертывать свои решения во многих средах (dev, staging, ..)

2 варианта: заменить весь файл только разделами. Решение по любому из них было бы оценено

Я создал 4 разных файла: AppSettings.Staging.config, AppSettings.Dev.config, connectStrings.Dev.config, соединительные строки.Промежуточный файл.config.

Я хочу заменить эти разделы в web.config во время развертывания.

Мой раздел MSBuild выглядит следующим образом

   <msbuild>
    <executable>C:WINDOWSMicrosoft.NETFrameworkv3.5MSBuild.exe</executable>
    <workingDirectory>C:Travailerp.visual.webapp.erpportal</workingDirectory>
    <projectFile>erp.visual.webapp.erpportal.sln</projectFile>
    <buildArgs>/p:ProjectFile=$SolutionFile$ /t:TransformWebConfig /p:Configuration=Staging</buildArgs>
    <targets>Build</targets>
    <timeout>900</timeout>
    <logger>C:Program FilesCruiseControl.NETserverThoughtWorks.CruiseControl.MsBuild.dll</logger>
  </msbuild>
  

Как я могу получить аргумент «/p:Configuration=Staging»? я пытаюсь выполнить следующее

     <ItemGroup Condition=" '$(Configuration)' == 'Staging' ">

      <WebConfigReplacementFiles Include="appSettings.Staging.config">
      <Section>appSettings</Section>  
      </WebConfigReplacementFiles>

      <WebConfigReplacementFiles Include="connectionStrings.Staging.config">
        <Section>connectionStrings</Section>
      </WebConfigReplacementFiles>

    </ItemGroup>          
  

Но куда мне поместить этот раздел в ccnet.config?

Ответ №1:

Найден способ сделать это. у меня есть web.config для каждой среды. web.staging.config, web.test.config. web.uat.config и так далее

В моем файле ccnet.config

   <nant>
    <executable>C:nantbinnant.exe</executable>
    <baseDirectory>C:Travailerp.visual.webapp.erpportal</baseDirectory>
    <nologo>false</nologo>
    <buildFile>C:Program FilesCruiseControl.NETserverbuild.xml</buildFile>
    <targetList>
     <target>buildAll</target>
    </targetList>
    <buildTimeoutSeconds>60000</buildTimeoutSeconds>
  </nant>
  

В моем build.xml файл я использую тег копирования файла из Nant в целевом теге

 <copy file="${root.dir}erp.visual.webapp.erpportalweb.staging.config"
      tofile="${deploy.web.dir}Web.config" 
      overwrite="true"
      inputencoding="latin1"
      outputencoding="utf-8">
</copy>