Развертывание проекта MSBuild в локальную папку с преобразованным конфигом - PullRequest
3 голосов
/ 25 марта 2012

У меня возникают проблемы при попытке найти правильный способ использования MSBuild для создания веб-проекта и вывода проекта только с развертываемыми файлами (т. Е. Без .cs, .csproj, .Debug.config и т. Д.), Но опубликованных в локальная папка, которую я могу затем использовать по FTP, RoboCopy или как-то еще во вторичном расположении.

Опубликованный вывод должен иметь предварительно преобразованный файл Web.config в соответствии с указанной конфигурацией и конфигурационные файлы преобразования (например, Web.Debug.config) не , включенные в вывод. Мне не нужна какая-то изумительная публикация в IIS, развертывание базы данных или что-то в этом роде, я просто хочу получить чистый вывод файловой системы, который затем смогу протестировать. Обратите внимание, что этого нельзя сделать с помощью визуальных инструментов, поскольку я хочу запустить его как часть автоматизированного процесса сборки.

Я могу сгенерировать пакет веб-развертывания, но не могу заставить работать WebDeploy, потому что он, похоже, больше не обрабатывает параметры командной строки, заключенные в кавычки (кажется, что-то вроде ошибки), а структура каталогов имеет пробелы, поэтому Я надеялся выполнить всю задачу с помощью MSBuild, поскольку MSBuild, похоже, обладает собственной способностью преобразовывать конфигурационный файл (TransformXml), который является единственной реальной частью правильной функциональности развертывания, которую я бы использовал.

1 Ответ

1 голос
/ 25 марта 2012

Понял, в конце концов.Следующий скрипт сборки добивается цели:

<?xml version="1.0"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll"/>
    <PropertyGroup>
        <OutputDir>obj\website-output</OutputDir>
    </PropertyGroup>
    <Target Name="PrepareDeploy">
        <ItemGroup>
            <DeployableFiles Include="App_Code/**/*.*;App_Data/**/*.*;Areas/**/Views/**/*.*;bin/**/*.*;Views/**/*.*;*.aspx;*.asax;*.html;*.htm;sitemap.xml;*.ico;*.png" Exclude="App_Data/**/*.log" />
        </ItemGroup>
        <RemoveDir ContinueOnError="true" Directories="$(OutputDir)" />
        <MSBuild Projects="Website.csproj" />
        <MakeDir ContinueOnError="true" Directories="$(OutputDir)" />
        <Copy SourceFiles="@(DeployableFiles)" DestinationFiles="@(DeployableFiles->'$(OutputDir)\%(RelativeDir)%(Filename)%(Extension)')" />
        <TransformXml Source="Web.config" Transform="Web.$(Configuration).config" Destination="$(OutputDir)\web.config" />
    </Target>
</Project>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...