Если вы используете веб-приложение VS2010 (в отличие от проекта веб-сайта), рассмотрите возможность настройки параметров Package / Publish Web в своем проекте и создания цели Project в своем скрипте nant.
Множество сочных знаний и опыта работы с msdeploy: http://www.hanselman.com/blog/WebDeploymentMadeAwesomeIfYoureUsingXCopyYoureDoingItWrong.aspx
В моих скриптах nant я запускаю следующие команды msbuild:
<if test="${property::exists('basename')}">
<exec program="${msbuild.location}" workingdir="${project::get-base-directory()}">
<arg value="/p:Configuration=${configuration}" />
<arg value="/logger:ThoughtWorks.CruiseControl.MsBuild.XmlLogger,${msbuild.logger.dll}" if="${nunit.formatter.type == 'Xml'}"/>
<arg value="/noconsolelogger" if="${nunit.formatter.type == 'Xml'}"/>
<arg value="${basename}.sln"/>
</exec>
</if>
...
<if test="${property::exists('basename')}">
<exec program="${msbuild.location}" workingdir="${project::get-base-directory()}\${basename}">
<arg value="/p:Configuration=${configuration}" />
<arg value="/t:Package" />
<arg value="/logger:ThoughtWorks.CruiseControl.MsBuild.XmlLogger,${msbuild.logger.dll}" if="${nunit.formatter.type == 'Xml'}"/>
<arg value="/noconsolelogger" if="${nunit.formatter.type == 'Xml'}"/>
<arg value="${basename}.csproj"/>
</exec>
</if>
My basename nant variableдает имя как файла решения VS (.sln), так и файла проекта (.csproj) для веб-приложения.Я предпочитаю развертывание zip-файлов, как показано в настройках моего проекта:
Есть еще одна особенность.Если вы устанавливаете MSDeploy версии 2.0 на целевой машине, файл .deploy.cmd необходимо отредактировать, чтобы изменить номер версии MSDeploy следующим образом:
Изменить
for /F "usebackq tokens=2*" %%i in (`reg query "HKLM\SOFTWARE\Microsoft\IIS Extensions\MSDeploy\1" /v InstallPath`) do (
На
for /F "usebackq tokens=2*" %%i in (`reg query "HKLM\SOFTWARE\Microsoft\IIS Extensions\MSDeploy\2" /v InstallPath`) do (