Skip to content

Compilation ru RU

ArchiBot edited this page Nov 23, 2021 · 46 revisions

Компиляция

Компиляция - это процесс создания исполняемого файла. Это то, что вы хотите сделать, если хотите добавить свои собственные изменения в ASF или если по какой-либо причине вы не доверяете исполняемым файлам, указанным в официальных выпусках. Если вы пользователь, а не разработчик, скорее всего, вы хотите использовать уже предварительно скомпилированные двоичные файлы, но если вы хотите использовать свои собственные или узнать что-то новое, продолжайте читать.

ASF может быть скомпилирован на любой поддерживаемой платформе, если у вас есть все необходимые для этого инструменты.


.NET SDK

Независимо от платформы, для компиляции ASF необходим полный .NET SDK (а не только среда выполнения). Инструкции по установке можно найти на странице загрузки .NET Core. Вам необходимо установить подходящую версию .NET SDK для вашей ОС. После успешной установки, команда dotnet должна быть полностью работоспособна. Вы можете проверить, работает ли она, вызвав dotnet --info. Также убедитесь, что ваш .NET SDK соответствует требованиям среде выполнения ASF.


Компиляция

Если у вас есть работоспособное .NET SDK нужной версии, просто перейдите в папку с исходниками ASF (клонированный или скачанный и распакованный репозиторий ASF) и запустите:

dotnet publish ArchiSteamFarm -c "Release" -f "net6.0" -o "out/generic"

Если вы используете Linux/OS X, вместо этого вы можете использовать скрипт cc.sh, который будет делать то же самое, но несколько сложнее.

Если компиляция завершилась успешно, вы можете найти свой ASF в варианте source в папке out/generic. Это то же самое, что и официальная сборка ASF в варианте generic, но в ней принудительно установлены равными 0 параметры UpdateChannel и UpdatePeriod, как и положено для самостоятельной сборки.

Сборка под конкретные ОС

Вы также можете создать пакеты .NET для конкретных ОС, если у вас есть такая потребность. Обычно вы не должны этого делать, потому что вы только что скомпилировали вариант generic, который вы можете запустить с уже установленной средой выполнения .NET, которую вы только что использовали для компиляции, но на случай, если вы этого хотите:

dotnet publish ArchiSteamFarm -c "Release" -f "net6.0" -o "out/linux-x64" -r "linux-x64"

Разумеется, замените linux-x64 на нужное вам сочетание ОС и архитектуры, например win-x64. Обновления этой сборки также будут отключены.

.NET Framework

In a very rare case when you'd want to build generic-netf package, you can change target framework from net6.0 to net48. Имейте в виду, что для компиляции в варианте netf, в дополнение к .NET SDK, вам потребуется соответствующий пакет .NET Framework, поэтому следующая команда сработает только под Windows:

dotnet publish ArchiSteamFarm -c "Release" -f "net48" -o "out/generic-netf"

В случае, если вы не можете установить .NET Framework или даже сам .NET SDK (например, из-за сборки в системе linux-x86 под mono), вы можете вызвать msbuild напрямую. Вам понадобиться вручную указать ASFNetFramework, поскольку ASF по умолчанию деактивирует сборку варианта netf на платформах, отличных от Windows:

msbuild /m /r /t:Publish /p:Configuration=Release /p:TargetFramework=net48 /p:PublishDir=out/generic-netf /p:ASFNetFramework=true ArchiSteamFarm

ASF-ui

While the above steps are everything that is required to have a fully working build of ASF, you may also be interested in building ASF-ui, our graphical web interface. From ASF side, all you need to do is dropping ASF-ui build output in standard ASF-ui/dist location, then building ASF with it (again, if needed).

ASF-ui is part of ASF's source tree as a git submodule, ensure that you've cloned the repo with git clone --recursive, as otherwise you'll not have the required files. You'll also need a working NPM, Node.js comes with it. If you're using Linux/OS X, we recommend our cc.sh script, which will automatically cover building and shipping ASF-ui (if possible, that is, if you're meeting the requirements we've just mentioned).

In addition to the cc.sh script, we also attach the simplified build instructions below, refer to ASF-ui repo for additional documentation. From ASF's source tree location, so as above, execute the following commands:

rm -rf "ASF-ui/dist" # ASF-ui doesn't clean itself after old build

npm ci --prefix ASF-ui
npm run-script deploy --prefix ASF-ui

rm -rf "out/generic/www" # Ensure that our build output is clean of the old files
dotnet publish ArchiSteamFarm -c "Release" -f "net6.0" -o "out/generic" # Or accordingly to what you need as per the above

You should now be able to find the ASF-ui files in your out/generic/www folder. ASF will be able to serve those files to your browser.

Alternatively, you can simply build ASF-ui, whether manually or with the help of our repo, then copy the build output over to ${OUT}/www folder manually, where ${OUT} is the output folder of ASF that you've specified with -o parameter. This is exactly what ASF is doing as part of the build process, it copies ASF-ui/dist (if exists) over to ${OUT}/www, nothing fancy.


Разработка

Если вы хотите изменить код ASF, для этой цели вы можете использовать любую совместимую с .NET IDE, хотя даже это необязательно, поскольку вы также можете редактировать код с помощью блокнота и компилировать его командой dotnet, как описано выше. Тем не менее, для Windows мы рекомендуем последнюю версию Visual Studio (бесплатной community version более чем достаточно).

Если вы хотите работать с кодом ASF на Linux/OS X, мы рекомендуем последнюю версию Visual Studio Code. Оно не обладает такими возможностями как классическая Visual Studio, но и этого вполне достаточно.

Разумеется, всё предложенное выше это только наши рекоммендации, вы можете использовать что угодно, всё равно это в конце концов сводится к команде dotnet build. Мы используем JetBrains Rider для разработки ASF, хотя это не бесплатное решение.


Теги

Не гарантируется, что ветвь main будет находиться в состоянии, позволяющем произвести успешную компиляцию, или даже безошибочную работу ASF, поскольку это ветвь в которой ведётся разработка, как указано в статье Цикл выпуска. Если вы хотите скомпилировать ASF из исходного кода, или сослаться на исходный код ASF в своём проекте, вам следует использовать для этого соответствующий тег, что гарантирует как минимум успешную компиляцию, и скорее всего - безошибочную работу (если эта сборка отмечена как стабильная). Чтобы проверить текущее «состояние» дерева, вы можете использовать наш CI - GitHub.


Официальные версии

Официальные выпуски ASF скомпилированы GitHub для Windows с последним .NET SDK, который соответствует требованиям среды выполнения ASF. После успешного прохождения тестов, все пакеты загружаются в виде готового выпуска, также на GitHub. Это гарантирует прозрачность, поскольку GitHub всегда использует официальный публичный исходный код для всех сборок, и вы можете сравнить контрольные суммы артефактов GitHub с файлами выпуска на GitHub. Разработчики ASF не компилируют и не публикуют сборки самостоятельно, за исключением индивидуального процесса разработки и отладки.

Clone this wiki locally