工作環境的網路管制多,簡單的事也變得有挑戰性。最近在測試 Jenkins,需在伺服器安裝 MSBuild 以自動編譯 Visaul Studio 專案,原本是下載、執行、下一步、下一步就搞定的小事,遇到安裝主機無法連上 Internet 就沒這麼簡單了。

Microsoft Build Tools 2015 的下一版不是 Microsoft Build Tools 2017,到 VS2017 變成 Build Tools for Visual Studio 217,採取隨選下載安裝概念,但如果要安裝的主機無法連上 Internet,需要費點手腳準備離線安裝檔。

做法如下:參考

  1. 網站找到 Build Tools for Visual Studio 217 下載安裝程式(vs_buildtools_xxxxx.exe)
  2. vs_buildtools_*.exe 可用來下載指定 Workload (工作負載) 儲存到指定目錄產生離線安裝包,但要先知道需下載哪些 Workload。
    Visual Studio Build Tools 2017 元件目錄有完整 Workload 清單,可用來查詢 需要安裝的項目。
  3. 輸入參數執行 vs_buildtools_*.exe 開始下載,以我的案例主要想編譯 ASP.NET 或 .NET Core 專案,故參數範例如下:
    vs_buildtools__617189595.1457490463.exe --layout X:\Temp\BuildTools --add Microsoft.VisualStudio.Workload.MSBuildTools --add Microsoft.VisualStudio.Workload.WebBuildTools --add Microsoft.VisualStudio.Workload.NetCoreBuildTools --includeRecommended --includeOptional --lang en-US
    
  4. 下載後會冒出一堆資料夾,將其複製到目標主機。
  5. certificates 目錄下有幾張根憑證,考量目標主機因無法上網有驗證問題,需手動匯入。(註:建議手動選取「受信任的根憑證授權單位」)
  6. 安裝好憑證,執行vs\_buildtools\_*.exe --noweb

    安裝程式會跳過下載步驟直接安裝,但走的仍是 Visual Studio 2017 標準安裝介面:

    補充一點,如上圖安裝介面有一些選擇性安裝項目,有一些預設已勾選,這部分未包含在 Workload 下載檔案裡,需搭配參數 --includeRecommended 或 --includeOptional 預先下載。如要安裝預設勾選項目,要加 --includeRecommended,若要額外加裝其他選擇性項目,則要加上 --includeOptional。若不在意多花時間下載及多佔空間,指定 --includeRecommended --includeOptional 全都包進來較省事。

安裝完畢,找到 MSBuild 安裝路徑 C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin,隨便找個測試專案,執行 msbuild C:\Temp\NameStamp\NameStamp.sln,編譯成功。

When installing VS build tools on a machine without Internet connection, you need to download the workload in another computer and copy the offline setup files. This article provides the recommended steps.


Comments

# by Friend

十分感謝!!!

Post a comment