gpt4 book ai didi

.net - 获取 msbuild 以远程部署干净的应用程序

转载 作者:行者123 更新时间:2023-12-04 21:24:09 25 4
gpt4 key购买 nike

我们正在使用 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=某个密码

msbuild 真的“智能”到足以同步文件,从而无需每次都进行干净的部署吗?如果没有,是否有一种简单的方法可以先删除文件?

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

最佳答案

我不确定 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 上的名称)

关于.net - 获取 msbuild 以远程部署干净的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6606439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com