Получить msbuild для удаленного развертывания чистого приложения - PullRequest
5 голосов
/ 07 июля 2011

Мы используем msbuild для развертывания приложения ASP.NET MVC на нескольких разных серверах.Тем не менее, msbuild, по-видимому, не удаляет папку удаленного приложения вначале (он просто обновляет файлы).Наша командная строка msbuild выглядит следующим образом:

"C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ msbuild.exe" OurWebProject.csproj / P: BaseIntermediateOutputPath = c: \ temp \ tempfolder \/ P: Конфигурация = Выпуск / P: DeployOnBuild = Истина / P: DeployTarget = MSDeployPublish / P: MsDeployServiceUrl = https://192.168.0.83:8172/MsDeploy.axd / P: AllowUntrustedCertificate = True / P: MSDeployPublishMethod = WMSvc / P: CreatePackNueWebUpUpUpOUpPO/ P: Пароль = SomePassword

Достаточно ли умна msbuild для синхронизации файлов, устраняя необходимость в чистом развертывании каждый раз?Если нет, есть ли простой способ сначала удалить файлы?

Мы используем преобразования web.config, поэтому каждый раз web.config перестраивается / развертывается (это хорошо, поскольку мы хотим, чтобы пул приложений перезапускался при каждом развертывании).

Ответы [ 2 ]

2 голосов
/ 07 июля 2011

Я не уверен, есть ли какие-то конкретные опции для команды msbuild, но, возможно, вы могли бы добавить цель в свой проект?Вы можете создать:

<Target Name=CleanServerFolders>
  <Exec Command="psexec \\$(serverIP) -u $(serverUserName) -p $(serverUserPassword) del $(projectFolderOnServer)"
</Target>

Если вы не знаете PsExec, посмотрите здесь: http://technet.microsoft.com/en-us/sysinternals/bb897553.Это легкий инструмент от Microsoft, вероятно, лучший вариант для запуска команд на сервере.А затем измените команду msbuild для вызова этой цели (но тогда вам нужно указать все другие цели по умолчанию в этой команде):

msbuild.exe /t:Build,CleanServerFolders,Deploy ...etc

В конце концов, вы можете добавить события после сборки в файл (ы) проекта.

<Project>
  ...
  <Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" />
  <Target Name="AfterBuild"><CallTarget Targets="CleanServerFolders"/></Target>
</Project>

Конечно, Microsoft.VisualBasic.targets - это файл для проектов .vbproj.Если вы используете c #, попробуйте Microsoft.CSharp.targets (лучше проверьте имя в MSDN)

0 голосов
/ 07 июля 2011

Вы пробовали использовать команду robocopy?Пакет расширения msbuild имеет оболочку msbuild для этого?См. http://msbuildextensionpack.codeplex.com/

. Вы можете настроить robocopy только для обновления различных файлов и других видов копирования.Посмотрите на robocopy /?и увидеть все доступные варианты для ускорения развертывания.

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