Skip to content

Compilation ru RU

JustArchi edited this page Feb 18, 2019 · 46 revisions

Компиляция

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

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


.NET Core SDK

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


Компиляция

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

dotnet publish ArchiSteamFarm -c "Release" -f "netcoreapp2.2" -o "out/generic" "/p:LinkDuringPublish=false"

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

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

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

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

dotnet publish ArchiSteamFarm -c "Release" -f "netcoreapp2.2" -o "out/linux-x64" -r "linux-x64" "/p:CrossGenDuringPublish=false"

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

.NET Framework

В очень редком случае, когда вы захотите создать сборку generic-netf, вы можете изменить целевой фреймворк с netcoreapp2.2 на net472. Имейте в виду, что для компиляции в варианте netf, в дополнение к .NET Core SDK, вам потребуется соответствующий пакет .NET Framework, поэтому следующая команда сработает только под Windows:

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

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

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

Разработка

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

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

Разумеется, всё предложенное выше это только наши рекоммендации, вы можете использовать что угодно, всё равно это в конце концов сводится к команде dotnet build. Мы используем для разработки ASF Visual Studio + ReSharper, и небольшое количество утилит(tools) сторонних разработчиков, которые вы можете найти в репозитории.


Теги

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


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

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

Clone this wiki locally