Bamboo не преобразует файл Web.config для любой пользовательской конфигурации сборки.

Вот сценарий: у меня есть веб-сайт, на котором есть файл web.config вместе со многими другими файлами конфигурации для конкретной среды, такими как Web.Staging.config / Web.Release.config / Web.OnPrem.config Теперь я настроил цель BeforeBuild в файле csproj моего проекта веб-сайта:

<Target Name="BeforeBuild">
    <TransformXml Source="Web.config" Transform="Web.$(Configuration).config" Destination="Web.config" />
</Target>

Это хорошо работает, когда я настраиваю bamboo для сборки и создания артефактов в режиме Release (так что развернутое приложение имеет преобразованный файл web.config из web.Release.config. Но когда я меняю bamboo для сборки и создания артефактов с использованием конфигурации OnPrem, он неправильно преобразует файл web.config.

Когда я говорю «Настройте бамбук для сборки» в конфигурации OnPrem, я фактически изменил параметр конфигурации на следующий:

/p:Configuration=OnPrem а также я изменил BambooBuild.proj, чтобы

<ConfigurationToBuild Include="OnPrem|Any CPU">
  <FlavorToBuild>OnPrem</FlavorToBuild>
  <PlatformToBuild>Any CPU</PlatformToBuild>
</ConfigurationToBuild>

Что мне здесь не хватает?


person tavier    schedule 27.10.2017    source источник


Ответы (1)


Поскольку вы можете создавать только одну активную конфигурацию за раз, какая бы конфигурация вы ни строили, она будет подставлена ​​в переменную $ (Configuration).

Обычно я делаю следующее:

  1. построить (без преобразований) для создания моей библиотеки DLL и других программных артефактов
  2. то у меня есть отдельный процесс сборки, который запускает только преобразования и создает отдельные (в вашем случае) файлы Web.Staging.config, Web.Release.config и Web.OnPrem.config
  3. в моих планах развертывания для отдельных сред я выбираю файл Web.xxx.config, который мне нужен для этой среды, и переименовываю его в Web.config.

Вы можете использовать MSBuild из командной строки только для выполнения преобразований. (Обратите внимание, что единственная разница здесь - Web.Staging.config или Web.Release.config):

Msbuild.exe /target:Transform "/property:TransformInputFile=path\to\Web.config;TransformFile=path\to\Web.Staging.config;TransformOutputFile=path\to\artefacts\Web.Staging.config" MSBuild.xml
Msbuild.exe /target:Transform "/property:TransformInputFile=path\to\Web.config;TransformFile=path\to\Web.Release.config;TransformOutputFile=path\to\artefacts\Web.Release.config" MSBuild.xml

Подходящий для подобного использования файл MSBuild.xml должен содержать что-то вроде следующего:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0"
         DefaultTargets="Deploy"
         xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <UsingTask TaskName="TransformXml"
         AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll"/>

  <Target Name="Transform">
    <TransformXml Source="$(TransformInputFile)"
          Transform="$(TransformFile)"
          Destination="$(TransformOutputFile)"
          StackTrace="$(StackTraceEnabled)" />
  </Target>

</Project>
person thinkOfaNumber    schedule 22.10.2018