一、前言 由於公司要求項目需要走CI構建平臺,拋棄掉之前的人工編譯打包方式,所以需要調研一下項目怎麼通過命令行編譯出產物。 二、準備工作 1. 在構建機器上安裝vs(本文示例為vs2017) 2. 將代碼上傳版本控制倉庫(本文示例為Gitlab),並確保構建機器可以正常訪問並下載源代碼 3. 確保構 ...
一、前言
由於公司要求項目需要走CI構建平臺,拋棄掉之前的人工編譯打包方式,所以需要調研一下項目怎麼通過命令行編譯出產物。
二、準備工作
- 在構建機器上安裝vs(本文示例為vs2017)
- 將代碼上傳版本控制倉庫(本文示例為Gitlab),並確保構建機器可以正常訪問並下載源代碼
- 確保構建機器可以正常編譯目標項目,最快捷的方案就是在構建機器上跑一下
- 修改項目的編譯配置及平臺,例如我設置了Release+CI作為CI構建用的配置,並把輸出路徑改為了
..\CIResult\
三、編寫構建命令
- 找到vs的安裝路徑,找到devenv.exe,例如
D:\VS2017\Common7\IDE\devenv.exe
- 明確自己需要編譯的解決方案的名稱,例如:
ABC.sln
- 明確自己需要使用的編譯設置,例如前文設置好的:
Release
+CI
- 編寫編譯命令,例如:
"D:\VS2017\Common7\IDE\devenv.exe" devenv "ABC.sln" /rebuild "Release|CI" /out courtClient.log
- 執行命令,就可以到
..\CIResult\
去獲取產物了,如果嫌棄文件夾麻煩,可以在編譯完成後再加一句命令WinRAR a -r ABC.zip CIResult\*
來打個壓縮包。
四、註意事項
- 如果項目中使用了nuget管理引用的組件,建議把packages文件夾加入源代碼倉庫中,因為我不知道怎麼讓vs在編譯前自動下載包並還原,只能用這個笨方法了。附上git的文件包含腳本,打開.gitignore文件加上一行
!/packages/*
- 編譯的錯誤日誌打在了courtClient.log文件里
五、結束
自己摸索的,也踩了些坑最後總結出的方法,可能不是很合理,希望大佬們如果有更好的方法可以批評指正。