2013-04-04 15 views
0

有一個帶有批處理文件的web項目,可生成目標服務器上所需的所有文件,並將它們放入文件夾「/ Deployable」。使用MSDeploy將buildresult複製到目標服務器

該批處理文件相當複雜,因爲該項目包含一個插件系統,所有插件需要複製到某個位置。

當我使用webdeploy部署到目標服務器時,它發生了你所期望的:有一些需要的程序集被複制過來,但不是在批處理文件中指定的文件。

我現在計劃先執行批處理文件,然後使用webdeploy將文件夾「/ Deployable」複製到目標服務器。這可以通過webdeploy完成嗎?

這是我在Visual Studio中部署menue看到:enter image description here

這是導致發佈配置

<?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>> 

回答

1

我認爲是添加第三方文件到webdeploy的能力通過修改.csproj文件包,但是,我從來沒有用過它。


或者,你可以很容易地通過使用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.axdhttp://myserver/msdeployagentservice
  • $(DeployUserName) - 用戶名用於部署的(應該是管理員爲2003勝)
  • $(Password) - 用戶的密碼。

這就是它 - 這個命令將Deployable\文件夾$(DeployDirectoryLocalPath)文件夾同步(即使內容完全一致)。

你可以把它包裝成一個MSBuild目標在.csproj文件:

<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* 
相關問題