衆所周知dotnet cli能夠用來編譯和生成發佈.net core,其實dotnet publish 還能進行WebDeploy。先解釋一下使用場景通常是用於持續部署git
dotnet publish進行web deploy實際上是內置調用MSBuild, 至關於dotnet publish和MSBuild進行web deploy兩個步驟合二爲一了。web
首先,執行部署命令的機器須要安裝MSBuild 和Visual Studio Build Tools。目前最新的Visual Studio Installer已經集成了安裝組件,因此咱們只須要經過Visual Studio Installer來安裝就能夠了。後續的vs2019版本的安裝器應該也會是這樣的。shell
以下圖所示,勾選Visual C++生成工具,取消勾選CMake和測試工具(由於進行web deploy是不須要,須要的人請略過)windows
而後在單個組件中勾選Web部署 (Web Deployed)緩存
而後點擊安裝就能夠了,總共須要約4G空間。服務器
在VS中添加WebDeploy配置文件工具
填入目標服務器,站點名,進行部署的用戶名 密碼,目標url選填。而後點擊驗證鏈接,測試是否出錯。保存便可。默認生成的發佈xml文件叫作CustomProfile.pubxml。在項目的Properties/PublishProfiles下能夠看到,能夠重命名。測試
而後打開命令行或者Powershell到項目所在目錄,運行dotnet publish命令,加上web deploy參數便可。ui
示例以下url
dotnet publish -c Release /p:PublishProfile="CustomProfile" /p:Password=xxxxx /p:AllowUntrustedCertificate=true
PublishProfile參數指定發佈xml文件名,Password指定發佈用戶名的密碼,AllowUntrustedCertificate指定是否容許不信任認證,設置爲true就不會報鏈接未認證的錯誤了。
其實還能夠在任意路徑運行,可是dotnet publish後要加上項目csproj文件的路徑,效果和同樣。
命令行發佈成功
在windows服務器中使用CI(持續集成)/CD(持續部署)就能夠經過這種方式一步到位編譯生成部署。
jenkins teamcity都行。azure devops則徹底不須要這種方式,由於它自帶的IIS部署就已經很強大了,並且CI和CD是徹底分離的。
可是azure devops的CI構建沒有緩存,致使每次構建都是一次git下載,徹底從新編譯部署的過程,實在是 太慢了。或許後續會有所改進吧(再吐槽下azure devops本地部署(就是TFS) 所用的ES實在是太吃內存,常年佔用4-6G,換成雲的又是6刀/人/月(5人一下免費),公司開發者恰好10個左右,很尷尬,不肯意花這錢。還有就是CI的速度問題最終不得不放棄Azure DevOps,選擇了teamcity)