Как MSDeploy встроенный пакет веб-сайта на первичный веб-сайт IIS - PullRequest
10 голосов
/ 03 сентября 2010

Я пытаюсь автоматизировать процесс сборки / развертывания.

Пока я использую:

  • решение Visual Studio 2010 с основным веб-приложением проект (и зависимые проекты)
  • MSBuild
  • MSDeploy
  • CruiseControl.Net

Итак, после долгих споров и скрежетов у меня теперь CCNet запускает скрипт MSBuild для сборки, упаковки и развертывания веб-сайта.Сценарий MSBuild приведен ниже:

<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="Build"> 
    <MSBuild Projects="$(CCNetWorkingDirectory)\src\Product.sln"
                    Targets="Clean;Rebuild"
                    Properties="Configuration=$(Configuration)"
    />
</Target>

<!--<Target Name="Test" DependsOnTargets="Build">
    <MSBuild Projects="$(CCNetWorkingDirectory)\src\Product.Web.Tests\Product.Web.Tests.csproj"
                    Properties="Configuration=$(Configuration);OutputPath=$(CCNetArtifactDirectory)\Tests\" />
    <Exec Command="$(MSTestPath) /testcontainer:$(CCNetArtifactDirectory)\Tests\Product.Web.Tests.dll /runconfig:$(CCNetWorkingDirectory)\src\Local.testsettings" ContinueOnError="false" />
</Target>-->

<Target Name="Package" DependsOnTargets="Build"> 
    <MSBuild Projects="$(CCNetWorkingDirectory)\src\Product.Web\Product.Web.csproj"
                    Targets="Package"
                    Properties="Configuration=$(Configuration);PackageLocation=$(PackageDir)\Product.zip"
    />
</Target>

<Target Name="Deploy" DependsOnTargets="Package">
    <Exec Command="&quot;$(MSDeployPath)&quot; -source:package='$(PackageDir)\Product.zip' -dest:auto,computerName='$(MSDeployComputerName)',includeAcls='False' -verb:sync -setParamFile:$(PackageDir)\Product.SetParameters.xml" ContinueOnError="false" />
</Target>

Все это прекрасно работает, если на целевой машине уже настроен веб-сайт в IIS.Это не обязательно должен быть существующий «настоящий» сайт (это может быть просто оболочка).

Хотя это здорово, я действительно хочу, чтобы MSDeploy автоматически создавал сайт, как, кажется, он может делать свеб-приложение.Это возможно?И если да, то любая помощь будет принята с благодарностью!

Ответы [ 2 ]

10 голосов
/ 12 сентября 2010

MSDeploy имеет такую ​​возможность, вам просто нужно подключить нужного провайдера.

Например, вы используете провайдера " auto " в пункте назначения, который в основном говорит, что пункт назначения будет таким же (или совместимым с) источником, который вы настраиваете как упаковка. Поскольку пакет не указывает свою среду размещения, msdeploy не собирается пытаться что-либо с ним делать, а просто копирует файлы из пакета.

Вы вызываете auto in ( "- dest: auto" ):

-dest:auto,computerName='$(MSDeployComputerName)'

Чтобы получить msdeploy для создания сайта, вам нужно использовать более конкретного поставщика, который понимает понятия «сайт» и «приложение» и как они могут использовать пакет в качестве содержимого элемента сайта.

Я давно этим не занимался, поэтому я не хочу выкладывать подробности (поскольку я, вероятно, буду вам ошибаться), но взгляну на документ MSDN о поставщиках msdeploy.

1-й взгляд на авто , ваши текущие настройки. Затем взгляните на iisApp и appHostconfig .

http://technet.microsoft.com/en-us/library/dd569040(WS.10).aspx

Я полагаю, что один из этих двоих при правильном использовании создаст для вас сайт / приложение и даст вам нужный вам результат.

4 голосов
/ 06 сентября 2010

Уверен, MSDeploy не может этого сделать. Одна вещь, которую я делал в прошлом, - это вызов задачи exec appcmd.exe для разрушения / создания нового веб-сайта. Задачи сообщества MSBuild имеют некоторые возможности веб-сайта, а также MSBuild Extension Pack .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...