[MsDeploy] .Net Core部署

    目前每天程式都是透過Jenkins執行Msbuild及MsDeploy來完成部署的工作。不過之前的發行方式,使用的是MsBuild建置成Package時所以產生的deploy.cmd如下圖。之前的文章也有介紹過相關使用方式。

image

問題


   前一陣子使用.net core開發了一個Web程式,剛開始都使用手動發行,沒什麼問題,現在要將發行的工作納入Jenkins,才知道,使用相同命令的MsBuild Command建置出來的package,沒有deploy.cmd可以使用......,所以必須使用MsDeploy.exe原生的指令發行。

使用MsDeploy.exe發行

1.使用MsBuild封裝成Package


msbuild.exe /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:configuration=Release /p:SkipInvalidConfigurations=true  "D:\NetCoreMsdeploy\NetCoreMsdeploy.sln" 
輸出結果如下

image


2.使用MsDeploy.exe發行

msdeploy.exe -source:package='D:\NetCoreMsdeploy\src\NetCoreMsdeploy\bin\Release\MSDeployPackage\NetCoreMsdeploy.zip' -dest:auto,ComputerName='http://your-ap/MsDeployAgentService',UserName='x',Password='x',IncludeAcls='False',AuthType='Basic' -verb:sync -retryAttempts:20 -disablerule:BackupRule -setParam:kind=ProviderPath,scope=iisApp,value=net.kim.info -enablerule:AppOffline
這裡要注意的是-setParam:kind=ProviderPath,scope=iisApp,value=net.kim.info,此為指定目的地的Site名稱,其他文章介紹的方式,大部分為
-setParam:'IIS Web Application Name..,該方式是配合之前的.Net Framework Web程式在發行時所產生的SetParameter.xml所使用,在.Net Core並沒有該檔案,當然你也可以自己手動產生一個...。

3.補充

若不使用上述第2點的-setParam指定的話,也可以使用-dest:manifest:使用xml定義檔,參考如下:

將-dest:auto 改成-dest:manifest="NetCoreMsdeploy.xml"
NetCoreMsdeploy.xml

image

執行訊息

image


參考來源


http://stackoverflow.com/questions/21056251/how-to-set-destination-website-on-msdeploy-exe-command-line
http://stackoverflow.com/questions/37869701/how-do-i-deploy-net-core-rc2-projects-via-msbuild-msdeploy

這個網誌中的熱門文章

[TFS] 分支與合併

[.NET Core] 將專案發行至IIS