Skip to content

Compilation zh TW

ArchiBot edited this page Oct 26, 2022 · 58 revisions

編譯

編譯是生成執行檔的過程。 若您想將自己的修改加入至ASF中,或出於任何原因不信任官方​發布頁面​中提供的執行檔,就需要做這件事。 如果您是一般的使用者而不是開發人員,則您很有可能需要使用已預編譯的二進制檔案,但若您希望使用自己的二進制檔案或學習新內容,請繼續閱讀。

只要您擁有所有需要的工具,就可以在任何當前支援的平台上編譯ASF。


.NET SDK

不論使用何種平台,您都需要完整的.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​。 這一建置版本也將停用自動更新。

.NET Framework

在極少見的情形下,若您想要建置​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-ui

雖然上述是建置完整的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正常執行,如我們在​< a href="https://github.com/JustArchiNET/ArchiSteamFarm/wiki/Release-cycle">發布週期​中所述,因為它是開發分支。 若您希望從原始碼編譯或參照ASF,就應該為此選擇適當的​標籤​,這樣能夠保證編譯成功,且很有可能還能完美執行(如果建置被標示成穩定版本)。 若要檢查Tree的當前「健康狀態」,您可以使用我們的CI:​GitHub​。


官方發布版本

官方ASF發布版本由​GitHub​在Windows上編譯,並帶有符合ASF​執行環境​的最新.NET SDK。 通過測試後,所有套件會都作為發布版本部署,並放置在GitHub上。 這也保證了透明度,因為GitHub都會使用官方開源來進行所有的建置,並且您也可以檢查GitHub部件的核對和及GitHub的發布資源。 除了私人的開發過程及除錯外,ASF開發人員不會自行編譯或發布建置版本。

從ASF V5.2.0.5開始,除了上述外,ASF維護人員會在獨立於GitHub的遠端伺服器上手動驗證並發布建置核對和,作為額外的安全措施。 現有的ASF必須執行此步驟,才能將該版本視為自動更新功能的有效候選版本。

Clone this wiki locally