преобразование web.config в зависимости от конфигурации решения

Утро / день / вечер все.

Я пытаюсь применить преобразования web.config как часть сборки Jenkins. Я получил преобразование, добавив в мой csproj следующее:

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

Это здорово, за исключением того факта, что теперь он преобразует файл, когда решение запускается локально. Поэтому я попытался предотвратить это, добавив условие ТОЛЬКО применять преобразования для сборок Jenkins. Я добавил конфигурации решения, настроил профиль публикации, чтобы использовать это, затем попытался добавить условие ...

Раскрывающийся список конфигурации решения

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

... и ...... это не работает :-(.

Фактически, преобразования полностью перестают работать, когда добавляется это условие (я могу утверждать это, изменяя конфигурации решения локально и создавая и наблюдая, что локальный файл web.config никогда не изменяется, независимо от того, какой вариант выбран).

Как запустить преобразования тогда и только тогда, когда для конфигурации решения установлено значение «Отладка сборки»?

Заранее спасибо.


person garryp    schedule 01.05.2015    source источник


Ответы (1)


Если вы используете профиль публикации на сервере сборки, вы можете использовать определенный веб-профиль для конкретного профиля. config transform, чтобы добавить собственное преобразование без изменения файлов проекта. Вы можете просто щелкнуть правой кнопкой мыши свой профиль публикации в обозревателе решений и выбрать Add config transform.

Результирующий файл преобразования будет называться web.[publishprofile].config, и это преобразование будет выполняться после преобразования, зависящего от конфигурации (Отладка / Выпуск). Он будет выполняться только при публикации / упаковке с использованием этого профиля публикации.


Если преобразование профиля публикации не соответствует вашим потребностям, просто добавьте аргумент /p:CustomConfigTransform=buildserver msbuild на сервере сборки jenkins и проверьте это свойство в своем сценарии сборки.

<Target Name="BeforeBuild">
    <TransformXml Source="Web.config" Transform="Web.$(CustomConfigTransform).config" Destination="Web.config"  Condition="'$(CustomConfigTransform)' != ''" />
</Target>

Нет необходимости добавлять новую конфигурацию сборки. Также я не уверен, поддерживается ли преобразование в тот же файл.

person Tomas Dolezal    schedule 01.05.2015