0

有一个带有批处理文件的 web 项目,它生成目标服务器上所需的所有文件并将它们放在文件夹 "/Deployable" 中。

批处理文件相当复杂,因为该项目包含一个插件系统,并且所有插件都需要复制到某个位置。

当我使用 webdeploy 部署到目标服务器时,它会发生您所期望的:复制了一些所需的程序集,但没有复制批处理文件中指定的文件。

我现在的计划是先执行批处理文件,然后使用 webdeploy 将文件夹“/Deployable”复制到目标服务器。这可以通过 webdeploy 完成吗?

这是我在 Visual Studio 部署菜单中看到的:在此处输入图像描述

这是生成的发布配置文件

<?xml version="1.0" encoding="utf-8"?> <publishData>
<publishProfile publishUrl="http://myserver/msdeployagentservice"
deleteExistingFiles="False" 
ftpAnonymousLogin="False" 
ftpPassiveMode="True"
msdeploySite="mysite/" 
msdeploySiteID="" 
msdeployRemoteSitePhysicalPath="" 
msdeployAllowUntrustedCertificate="False" 
msdeploySkipExtraFilesOnServer="False" 
msdeployMarkAsApp="False" 
profileName="publish_to_myserver" 
publishMethod="MSDeploy" 
replaceMatchingFiles="True" 
userName="myuser" 
savePWD="True" userPWD="xxx" SelectedForPublish="True" /> 
</publishData>>

4

1 回答 1

1

我认为可以通过修改文件将第三方文件添加到 webdeploy 包中.csproj,但是,我从来没有使用过它。


或者,您可以通过使用 MSDeploy 的命令行客户端及其sync动词,通过将您的/Deployable文件夹指定为-source参数并将目标服务器的 msdeploy 服务指定为,轻松实现相同的结果-dest,例如:

$(WebDeployToolPath)\msdeploy -verb:sync -source:dirPath='Deployable\' -dest:dirPath='$(DeployDirectoryLocalPath)',computerName=$(DeployTargetURL),userName='$(DeployUserName)',password='$(Password)',authType='Basic' -verbose -allowUntrusted

替补:

  • $(WebDeployToolPath)- 带有 msdeploy 可执行文件的文件夹的完整路径(例如c:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe
  • Deployable\- 您要复制到目标服务器的文件夹的完整路径。
  • $(DeployDirectoryLocalPath)-目标服务器上目标文件夹的完整本地路径。
  • $(DeployTargetURL)- 网络部署服务 URL(例如https://192.168.142.55:8172/MsDeploy.axdhttp://myserver/msdeployagentservice
  • $(DeployUserName)- 用于部署的用户名(应该是 Win 2003 的管理员)
  • $(Password)- 用户的密码。

就是这样 - 此命令将Deployable\文件夹与$(DeployDirectoryLocalPath)文件夹同步(即使内容完全匹配)。

您可以将其包装到.csproj文件中的 msbuild 目标中:

 <PropertyGroup>
     <DeployTargetURL Condition="'$(DeployTargetURL)'==''">https://192.168.142.55:8172/MsDeploy.axd</DeployTargetURL>
     <DeployUserName Condition="'$(DeployUserName)'==''">tergetServer\Administrator</DeployUserName>
     <Password Condition="'$(Password)'==''">AdminPassword</Password>
     <WebDeployToolPath Condition="'$(WebDeployToolPath)'==''">c:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe</WebDeployToolPath>

<Target Name="Deploy">
 <Exec Command="&quot;$(WebDeployToolPath)&quot;\msdeploy -verb:sync -source:dirPath='Deployable\' -dest:dirPath='$(DeployDirectoryLocalPath)',computerName=$(DeployTargetURL),userName='$(DeployUserName)',password='$(Password)',authType='Basic' -verbose -allowUntrusted " />
</Target>

然后通过以下方式从命令行运行它:

%windir%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe MyProject.proj /t:Deploy*
于 2013-04-09T12:22:56.043 回答