Автоматизируйте VS, 2010 “публикует” замены файла конфигурации

Я использую заменяющую функцию файла конфигурации 2010-х Visual Studio, "Публикуют" функциональность, как описано в этой статье. Я хочу автоматизировать это использование MSBuild/Гудзон. Кто-либо знает, как сделать это?

Мне нравится, как это работает, но если я не могу автоматизировать его, я должен буду переключиться на XmlMassUpdate или подобный.

7
задан Julien Hoarau 11 June 2010 в 07:59
поделиться

3 ответа

Объяснение

Чтобы преобразовать файл конфигурации, вам необходимо выполнить цель TransformWebConfig .

Эта цель принимает два файла Web.config и Web. $ (Configuration) .config и создает Web.config . Сгенерированный файл является преобразованной версией исходного файла для текущей конфигурации.

Этот файл создается в папке: obj \ $ (Configuration) \ TransformWebConfig

Использование

На самом деле вы не объясняете, чего хотите достичь, поэтому здесь базовое использование, задание, которое генерирует преобразованный файл конфигурации в заданной папке.

Добавьте следующий фрагмент в конец файла проекта *. Csproj после импорта Microsoft.WebApplication.targets

<PropertyGroup>
  <!-- Directory where your web.config will be copied -->
  <TransformedWebConfigDestination>$(MSBuildProjectDirectory)</TransformedWebConfigDestination>
</PropertyGroup>

<!--
  This target transforms the web.config based on current configuration and
  put the transformed files in $(TransformedWebConfigDestination) folder
-->
<Target Name="ConfigSubstitution">
  <CallTarget Targets="TransformWebConfig"/>

  <ItemGroup>
    <TransformedWebConfig Include="obj\$(Configuration)\TransformWebConfig\Web.config"/>
  </ItemGroup>

  <!-- Copy the transformed web.config to the configured destination -->
  <Copy SourceFiles="@(TransformedWebConfig)"
        DestinationFolder="$(TransformedWebConfigDestination)"/>
</Target>

В Hudson вы можете добавить Шаг сборки в вашей сборке или создайте специальное задание, настроенное следующим образом:

  • Файл сборки MsBuild: Ваш файл csproj.
  • Аргументы командной строки: / t: ConfigSubstitution / p: Platform = AnyCpu; Configuration = Test; TransformedWebConfigDestination = DestinationFolder
5
ответ дан 7 December 2019 в 03:11
поделиться

Отредактируйте ваш web project.csproj

под

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">

Add -
True

Посмотрите на вывод Build (убедитесь, что VS Tools - Options - Project & Solutions -Build & Run - MSBuild Output Verbosity - Detailed)

Вы должны увидеть команды msdeploy, которые VS использует для создания пакета. Насколько я понимаю, VS использует Web Platform Pipeline API и .target файлы для создания пакетов развертывания при сборке с помощью MSBuild, а эта команда изменяет использование MsDeploy.

Этот материал так нуждается в документации, что это очень расстраивает.

3
ответ дан 7 December 2019 в 03:11
поделиться

Я использую это в Hudson, чтобы нацелиться на Release:

/Property:Configuration=Release

Точные настройки:

Build
MSBuild Version: msbuild-4 (configured to point to v4 msbuild)
MsBuild Build File: project_name.sln
Command Line Arguments: /Property:Configuration=Release

Вы можете проверить это в директории вашего проекта, запустив что-то похожее (поскольку версия вашего .NET framework может отличаться) на это:

%SYSTEMROOT%\Microsoft.NET\Framework\v4.0.30319\msbuild project.sln /Property:Configuration=Release

1
ответ дан 7 December 2019 в 03:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: