部署到 Azure VM 麻煩了一些,主要都是安全性上的設定,囉嗦了點,沒甚麼大礙,FTP 這次選用的是 FileZilla Server,版控則是用 GitHub
開發環境
- Azure VM Windows Server 2016
- GitHub
- FileZilla Server
開始之前
產生 HTML
MsBuild 發行 ClickOnce 不會產生HTML,參考以下連結解決該問題
https://dotblogs.com.tw/yc421206/2018/03/13/clickonce_msbuild_generate_html_page
Azure VM 入口網站的網路設定
VM 內的防火牆設定
允許 FileZilla Server 應用程式
FileZilla Server
這網路上很多安裝教學,自己搜尋一下應該很多,我就跳過了。
我在這裡打開了 Passive mode 的 50001-50003,跟 Azure 入口網站的設定一樣
設定 VSTS Build
Get sources
- 這次的版控來源放在GitHub,https://github.com/yaochangyu/sample.dotblog/tree/master/ClickOnce/MsBuild
- 這個 Repository 裡面放了很多範例程式,所以會下載不需要 Build 的方案
- 因為有用到 Build.BinariesDirectory 資料夾,所以選擇 "Sources and output directory"
Visual Studio Build
- 建置需要的的方案
- 建置 ClickOnce,MSBuild Arguments 如下
/target:publish /p:MapFileExtensions=true /p:TrustUrlParameters=true /p:UseApplicationTrust=true /p:CreateDesktopShortcut=true /p:BootstrapperEnabled=true /p:IsWebBootstrapper=true /p:InstallFrom=Web /p:UpdateEnabled=false /p:ApplicationVersion=$(Build.BuildNumber) /p:TargetCulture=$(ClickOnce.TargetCulture) /p:ProductName=$(ClickOnce.ProductName) /p:PublisherName=$(ClickOnce.PublisherName) /p:InstallUrl=$(ClickOnce.InstallUrl)
參數
參數很多,換成自己的
Copy Files
過濾出 app.publish 資料夾必要的檔案,然後複製到 Build.BinariesDirectory
**\app.publish\**\*.deploy
**\app.publish\**\*.manifest
**\app.publish\**\*.htm
**\app.publish\**\setup.exe
**\app.publish\**\*.application
Archive Files
壓縮 app.publish 資料夾,然後放到 Build.ArtifactStagingDirectory
這裡又多跑了一次 Build,因為上一個 Build 用了 /target:publish,相關專案的 *.dll 並不會產生,測試不會跑,所以我再跑一次沒有帶參數的
Publish Build Artifacts
Build 完後就把檔案放到 Server 存放起來,等一下要給 Release 用
完成之後就開始跑...
VSTS Release
Release 最重要的就是選 Artifacts,它會從 Server (VSTS/TFS) 拿成品
Extract Files
解壓縮
FTP Upload
用 FTP 上傳成品,記得 Preserve file paths 要勾起來
最後,完成的結果長這樣
謝謝觀賞
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET