-
-
Notifications
You must be signed in to change notification settings - Fork 1k
Compilation zh TW
編譯是生成執行檔的過程。 若您想將自己的修改加入至ASF中,或出於任何原因不信任官方在發布頁面中提供的執行檔,就需要做這件事。 若您是一般的使用者而不是開發人員,則您很有可能需要使用已預編譯的二進制檔案,但如果您希望使用自己的二進制檔案或學習新內容,請繼續閱讀。
只要您擁有所有需要的工具,就可以在任何當前受支援的平台上編譯ASF。
不論使用何種平台,您都需要完整的.NET SDK(不只是執行環境)才能編譯ASF。 您可以在.NET下載頁面上找到安裝說明。 您需要安裝適合您作業系統的.NET SDK版本。 成功安裝後,dotnet
命令應可正常執行。 您可以使用dotnet --info
來驗證。 也要確保您的.NET SDK符合ASF的執行環境需求。
假設您已擁有適合的.NET SDK版本,只需前往ASF原始碼資料夾(Clone或下載並解壓縮後的ASF儲存庫)並執行:
dotnet publish ArchiSteamFarm -c "Release" -o "out/generic"
若您使用Linux/macOS,則可以改用cc.sh
腳本,以稍複雜的方法執行相同的操作。
若編譯成功完成,您可以在out/generic
資料夾中找到您的ASF source
套件。 這與ASF官方的Generic
組建版本相同,但因為這是您自己組建的,所以它會強制設定UpdateChannel
和UpdatePeriod
為0
。
若您有需要,也可以生成適用於特定作業系統的.NET套件。 在一般情形下,不需要這樣做,因為您剛剛編譯了generic
版本,您可以使用已安裝用於編譯的.NET執行環境來執行,但以防萬一您想要:
dotnet publish ArchiSteamFarm -c "Release" -o "out/linux-x64" -r "linux-x64" --self-contained
當然,您需要將linux-x64
取代成您所需目標的作業系統架構,例如win-x64
。 這個組建版本也將停用自動更新。 使用--self-contained
時,您同時也能選擇宣告額外兩種開關:-p:PublishTrimmed=true
會產生修整過的組建版本;-p:PublishSingleFile=true
會產生單一檔案。 同時使用兩項則會與我們的組建版本設定相同。
雖然上述是組建完整的ASF需要的所有步驟,但您可能也有興趣了解如何組建我們的Web使用者介面:ASF-ui。 從ASF的角度來說,您需要做的是將ASF-ui組建版本輸出放到標準ASF-ui/dist
位置,然後讓它與ASF一起組建(如果需要)。
ASF-ui作為Git Submodule,是ASF Source Tree的一部份,請確保您已使用git clone --recursive
來複製儲存庫,否則您會缺失必要檔案。 您還必須擁有可用的NPM,Node.js有自帶它。 若您使用Linux/macOS,我們建議使用我們的cc.sh
腳本,它將自動組建並搭載ASF-ui(如果可能,也就是說,若您滿足我們剛剛提到的需求)。
除了cc.sh
腳本,我們也在下文附上簡明組建說明,請參閱ASF-ui儲存庫以獲得更多說明文件。 從ASF的Source Tree位置,同上所述,執行以下命令:
rm -rf "ASF-ui/dist" # ASF-ui 不會自行清除舊組建版本
npm ci --prefix ASF-ui
npm run-script deploy --prefix ASF-ui
rm -rf "out/generic/www" # 確保我們的組建輸出不會含有舊檔案
dotnet publish ArchiSteamFarm -c "Release" -o "out/generic" # 或依據上文選擇您所需的
您現在應該可以在out/generic/www
資料夾中找到ASF-ui檔案了。 ASF能向您的瀏覽器伺服這些檔案。
或者,您也可以直接組建ASF-ui,不論是手動或是透過我們的儲存庫的幫助下,再手動複製組建輸出至${OUT}/www
資料夾中,其中${OUT}
是您使用-o
參數指定的ASF輸出資料夾。 這正是ASF在組建過程中所做的,它將ASF-ui/dist
(如果存在)複製到${OUT}/www
,沒什麼特別的。
若您想編輯ASF程式碼,您可以使用任何與.NET相容的IDE,但也可以選擇不用,因為您也可以使用記事本來編輯,並使用上述的dotnet
命令來編譯。
若您沒有更好的選擇,我們建議使用最新版本的Visual Studio Code,它有著基本功能,甚至能滿足您較進階的需求。 當然您可以自由選擇您想使用的工具,例如我們使用JetBrains Rider來開發ASF,但這並非免費的。
main
分支無法保證可以編譯成功或讓ASF正常執行,如我們在發布週期中所述,因為它是開發分支。 若您希望從原始碼編譯或參照ASF,就應該為此選擇適當的標籤,這樣能夠保證編譯成功,且很有可能還能完美執行(如果組建被標示成穩定版本)。 若要檢查Tree的當前「健康狀態」,您可以使用我們的CI:GitHub。
官方ASF發布版本由GitHub編譯,並帶有符合ASF執行環境的最新.NET SDK。 通過測試後,所有套件會都作為發布版本部署,並放置在GitHub上。 這也保證了透明度,因為GitHub都會使用官方開源來進行所有的組建,並且您也可以檢查GitHub部件的核對和及GitHub的發布資源。 除了私人的開發過程及除錯外,ASF開發人員不會自行編譯或發布組建版本。
除了上述情形外,ASF維護人員會在獨立於GitHub的遠端ASF伺服器上手動驗證並發布組建核對和,作為額外的安全措施。 現有的ASF必須執行此步驟,才能將該版本視為自動更新功能的有效候選版本。