-
-
Notifications
You must be signed in to change notification settings - Fork 1.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" -f "net6.0" -o "out/generic"
若您使用Linux/macOS,則可以改用cc.sh
腳本,以稍複雜的方法執行相同的操作。
若編譯成功完成,您可以在out/generic
資料夾中找到您的ASF source
套件。 這與ASF官方的Generic
建置版本相同,但因為這是您自己建置的,所以它會強制設定UpdateChannel
和UpdatePeriod
為0
。
若您有需要,也可以生成適用於特定作業系統的.NET套件。 一般而言,不需要這樣做,因為您剛剛編譯了generic
版本,您可以使用您已安裝用於編譯的.NET執行環境來執行,但以防萬一您想要:
dotnet publish ArchiSteamFarm -c "Release" -f "net6.0" -o "out/linux-x64" -r "linux-x64"
當然,您需要將linux-x64
替代成您所需目標的作業系統架構,例如win-x64
。 這一建置版本也將停用自動更新。
在極少見的情形下,若您想要建置generic-netf
套件,您可以將目標框架從net6.0
更改成net48
。 請注意,您需要適合的.NET Framework開發人員套件與.NET SDK才能編譯netf
變體版本,所以下列只適用於Windows:
dotnet publish ArchiSteamFarm -c "Release" -f "net48" -o "out/generic-netf"
若無法安裝.NET Framework或甚至.NET SDK自身(例如在linux-x86
上使用mono
建置版本),您可以直接呼叫msbuild
。 您還需要手動指定ASFNetFramework
,因為ASF在非Windows平台上預設停用netf
建置版本:
msbuild /m /r /t:Publish /p:Configuration=Release /p:TargetFramework=net48 /p:PublishDir=out/generic-netf /p:ASFNetFramework=true ArchiSteamFarm
雖然上述是建置完整的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" -f "net6.0" -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
命令來編譯。 不過,對於Windows系統,我們建議使用最新版本的Visual Studio(免費的社群版本即可)。
若您想要在Linux/macOS上使用ASF程式碼,我們建議使用最新版本的Visual Studio Code。 它沒有經典版Visual Studio那麼豐富的功能,但也已足夠了。
當然,以上都只是建議,您可以使用您想用的任何工具,但最後您都會需要使用dotnet build
命令來建置。 我們使用了JetBrains Rider來開發ASF,但它並不是免費的。
首先main
分支無法保證可以使編譯成功或ASF正常執行,如我們在發布週期中所述,因為它是開發分支。 若您希望從原始碼編譯或參照ASF,就應該為此選擇適當的標籤,這樣能夠保證編譯成功,且很有可能還能完美執行(如果建置被標示成穩定版本)。 若要檢查Tree的當前「健康狀態」,您可以使用我們的CI:GitHub。
官方ASF發布版本由GitHub在Windows上編譯,並帶有符合ASF執行環境的最新.NET SDK。 通過測試後,所有套件會都作為發布版本部署,並放置在GitHub上。 這也保證了透明度,因為GitHub都會使用官方開源來進行所有的建置,並且您也可以檢查GitHub部件的核對和及GitHub的發布資源。 除了私人的開發過程及除錯外,ASF開發人員不會自行編譯或發布建置版本。
從ASF V5.2.0.5開始,除了上述外,ASF維護人員會在獨立於GitHub的遠端伺服器上手動驗證並發布建置核對和,作為額外的安全措施。 現有的ASF必須執行此步驟,才能將該版本視為自動更新功能的有效候選版本。