Использование MSBuild для преобразования web.config

ОТРЕДАКТИРОВАНО для ясности (и обновил мои знания о проблеме) Я работаю над этим несколько дней и, похоже, не могу заставить его работать. Мы используем сервер сборки, на котором установлен Windows SDK 7.1 для запуска MSbuild (без визуальных студий). Мы запускаем множество файлов проекта MSBuild, чтобы без проблем создавать различные приложения. MSBuild моего приложения работал нормально, пока я не добавил преобразование Web.Config. Теперь он просто копирует различные файлы web.config (.debug.config, .release.config), а не выполняет преобразование.

Наша команда сборки

msbuild projectfile.proj /p:label=sourceTree_Label /fl

Внутри projectfile.proj находится задача msbuild.

<Target Name="ProjectName" DependsOnTargets="otherProject">     
<PropertyGroup>
<ReleasePublishArgs>Configuration=Release;OutputPath=$(ReleaseOutputDir)\$(ProjectNameReleaseAssemblyName)_$(Major)_$(Minor)_$(Build)_$(Revision);</ReleasePublishArgs>
        </PropertyGroup>

        <!-- Release Build Section -->
        <Message Text="Creating Project for Release..." />

        <MSBuild
            Projects="$(ProjectBaseDir)\$(ProjectFile)"
            Targets="Clean"
            Properties="Configuration=Release" />
        <MSBuild
            Projects="$(ProjectBaseDir)\$(ProjectFile)"
            Targets="Rebuild"
            Properties="$(ReleasePublishArgs)" />
    </Target>

Из того, что я прочитал, MSBuild должен просто обрабатывать преобразование. Однако это не работает для меня. Итак, мне нужно изменить файл .csproj, projectfile.proj или исходную команду MSBuild (или мне не хватает какой-то библиотеки на компьютере, который требуется)?

Примечание. Из-за юридических и ИТ-ограничений я не могу импортировать сторонние системы (SlowCheetah) в нашу корпоративную базу


person Cyber    schedule 21.06.2016    source источник
comment
Что я пробовал в MSBuild: 'MSBuild msbuild.script DeployOnBuild=True /p:label...' 'MSBuild msbuild.script /p:Configuration=Release /p:TransformConfigFiles=true /p:label. ..' 'MSBuild msbuild.script /p:Configuration=Release /t:TransformWebConfig /p:label...' (сбой) изменить .csproj с помощью 1) ' ‹Target Name=BeforeBuild Condition='$(PublishProfileName)' == '' And '$(WebPublishProfileFile)' == ''› ‹TransformXml Source=Web.config Transform=Web.$(Configuration).config Destination=Web. конфиг /› ‹/Цель›'   -  person Cyber    schedule 21.06.2016
comment
Измените .csproj с помощью '‹Target Name=TransformConfig AfterTargets=AfterBuild Condition='$(TransformConfig)'=='true'› ‹ItemGroup› ‹DeleteAfterBuild Include=$(OutDir)Web.*.config /› ‹DeleteAfterBuild Include=$(OutDir)ConnStrings.*.config /› ‹/ItemGroup› ‹TransformXml Source=Web.config Transform=$(FileName) Destination=$(OutDir)Web.config /› ‹TransformXml Source=ConnStrings .config Transform=ConnStrings.$(Configuration).config Destination=$(OutDir)ConnStrings.config /› ‹Удалить файлы=@(DeleteAfterBuild) /› ‹/Target›'   -  person Cyber    schedule 21.06.2016
comment
Я предполагаю, что медленный гепард установлен через nuget? И у вас есть msbuild на вашем сервере сборки, потому что нет TFS? Также см. здесь: stackoverflow.com/questions/19404266/   -  person Mike Cheel    schedule 21.06.2016
comment
Нет, SlowCheetah не установлен. У нас есть MsBuild, установленный на сервере сборки. Как я уже сказал, MSBuild отлично работает в нашем проекте, когда у нас был только базовый Web.Config. Это только преобразование, которое является новым и не работает через MSBuild.   -  person Cyber    schedule 22.06.2016
comment
Я привык находиться в среде TFS с использованием веб-развертывания (и медленного гепарда через nuget). Однако я полагаю, что без публикации и просто сборки вам нужно будет использовать slow cheetah (это бесплатно). Если вы настроили профиль публикации, вы сможете передать /p:DeployOnBuild=true /p:PublishProfile=‹Имя профиля› в msbuild. Кроме того, медленный Cheetah позволит вам щелкнуть правой кнопкой мыши файл web.‹cfg›.config и просмотреть его.   -  person Mike Cheel    schedule 22.06.2016
comment
SlowCheetah не подходит из-за лицензионных и ИТ-ограничений. Все, что я ищу, — это способ выполнить преобразование Web.Config через MSBuild, которое Visual Studio уже делает автоматически.   -  person Cyber    schedule 22.06.2016
comment
Затем вы должны сделать публикацию после сборки, если это ваши ограничения. Slow cheetah существует уже давно и был создан парнем из команды tfs, который также написал несколько популярных книг по tfs. Возможно, вы сможете убедить своих ИТ-специалистов. Вы также можете проверить это, но медленный гепард — ваш лучший вариант вне публикации: lostechies.com/erichexter/2013/01/20/   -  person Mike Cheel    schedule 22.06.2016
comment
Не могли бы вы дать какие-либо рекомендации о том, как выполнить публикацию? Я пробовал msbuild.../t:Clean;Rebuild;Publish, но это приводит к «_DeploymentUnpublishable Skipping unpublishable project» без указания, почему он не подлежит публикации. Есть ли какой-то дополнительный шаг или параметр, который мне не хватает?   -  person Cyber    schedule 22.06.2016
comment
Вы пробовали параметры, которые я упомянул выше? На самом деле я в отпуске до конца недели, так что... Также вы помещаете их в свой файл csproj.   -  person Mike Cheel    schedule 22.06.2016