有一个带有批处理文件的webproject,它生成目标服务器上所需的所有文件,并将它们放在“/ Deployable”文件夹中。
批处理文件非常复杂,因为项目包含一个插件系统,所有插件都需要复制到某个位置。
当我使用webdeploy部署到目标服务器时,它会按照您的期望发生:复制了一些所需的程序集,但不是批处理文件中指定的文件。
我的计划是首先执行批处理文件,然后使用webdeploy将文件夹“/ Deployable”复制到targetserver。这可以通过webdeploy来完成吗?
这是我在Visual Studio部署menue中看到的:
这是生成的发布配置文件
<?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>>
答案 0 :(得分:1)
我认为可以通过修改.csproj
文件将第三方文件添加到webdeploy包中,但是,我从来没有使用它。
或者,您可以使用MSDeploy command-line client及其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)
- 网络部署服务网址(例如https://192.168.142.55:8172/MsDeploy.axd
或http://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=""$(WebDeployToolPath)"\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*