.net 获取msbuild以远程部署clean应用程序

.net 获取msbuild以远程部署clean应用程序,.net,asp.net,asp.net-mvc,visual-studio-2010,msbuild,.net,Asp.net,Asp.net Mvc,Visual Studio 2010,Msbuild,我们正在使用msbuild将ASP.NET MVC应用程序部署到几个不同的服务器上。但是,msbuild似乎不会首先删除远程应用程序文件夹(它似乎只是更新文件)。我们的msbuild命令行如下所示: “C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe”OurWebProject.csproj/P:BaseIntermediateOutputPath=c:\temp\tempfolder\/P:Configuration=Relea

我们正在使用msbuild将ASP.NET MVC应用程序部署到几个不同的服务器上。但是,msbuild似乎不会首先删除远程应用程序文件夹(它似乎只是更新文件)。我们的msbuild命令行如下所示:

“C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild.exe”OurWebProject.csproj/P:BaseIntermediateOutputPath=c:\temp\tempfolder\/P:Configuration=Release/P:DeployOnBuild=True/P:DeployTarget=MSDeployPublish/P:MsDeployServiceUrl=https://192.168.0.83:8172/MsDeploy.axd /P:AllowUntrustedCertificate=True/P:MSDeployPublishMethod=WMSvc/P:CreatePackageOnPublish=True/P:UserName=ARemoteWebDeployUser/P:Password=SomePassword

msbuild是否真的足够“智能”来同步文件,从而消除每次都需要干净的部署?如果没有,是否有简单的方法先删除文件


我们正在使用web.config转换,因此每次都会重建/重新部署web.config(这是一件好事,因为我们希望在每次部署时重新启动应用程序池)。

我不确定msbuild命令是否有一些特定选项,但也许您可以将目标添加到项目中?您可以创建:

<Target Name=CleanServerFolders>
  <Exec Command="psexec \\$(serverIP) -u $(serverUserName) -p $(serverUserPassword) del $(projectFolderOnServer)"
</Target>
最终,您可以将生成后事件添加到项目文件中


...

当然,Microsoft.VisualBasic.targets是.vbproj项目的文件。如果您使用的是c#,请尝试使用Microsoft.CSharp.targets(最好在MSDN上检查名称)

您是否尝试过使用robocy命令? msbuild扩展包对此是否具有msbuild包装? 看

您可以将robocopy设置为仅更新不同的文件和各种其他复制选项。看看 机器人疗法/?并查看所有可用选项以加快部署

msbuild.exe /t:Build,CleanServerFolders,Deploy ...etc
<Project>
  ...
  <Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" />
  <Target Name="AfterBuild"><CallTarget Targets="CleanServerFolders"/></Target>
</Project>