.Net Core#
Для разработки .NET Core приложений нужно установить пакет SDK (который включает среду выполнения). Для запуска .NET Core приложений на Astra Linux достаточно установить среду выполнения (пакет .NET Runtime).
ALSE |
Debian |
.NET |
---|---|---|
1.8 |
12 (Bookworm) |
8.0, 7.0, 6.0 |
1.7 |
10 ( Buster) |
6.0 |
Предварительные шаги#
Перед тем как устанавливать любые пакеты проверим подключение репозиториев Astra Linux командой в консоли:
cat /etc/apt/sources.list
Для Astra Linux 1.7 список возможных репозиториев будет таким:
# Основной репозиторий
deb https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-main/ 1.7_x86-64 main contrib non-free
# Базовый репозиторий
deb https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-base/ 1.7_x86-64 main contrib non-free
# Расширенный репозиторий
deb https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-extended/ 1.7_x86-64 main contrib non-free
Для Astra Linux 1.8 список возможных репозиториев будет таким:
# Основной репозиторий
deb https://dl.astralinux.ru/astra/stable/1.8_x86-64/main-repository/ 1.8_x86-64 main contrib non-free non-free-firmware
# Расширенный репозиторий, включающий так же репозиторий для разработчиков
deb https://dl.astralinux.ru/astra/stable/1.8_x86-64/extended-repository/ 1.8_x86-64 main contrib non-free non-free-firmware
После проверки необходимо обновить список доступных пакетов командой в консоли:
sudo apt update
Совет
Подробнее о репозиториях можно прочесть в статьях Репозитории и Организация репозиториев
Установка#
В этом пункте описаны три варианта установки: рекомендуемый — с помощью менеджера пакетов APT (из репозиториев AL, доступные версии представлены в таблице ниже) — и альтернативные — с помощью сценария установки или загрузкой архива.
Установка с помощью менеджера пакетов (APT)#
Установку доступных дистрибутивов .Net из репозиториев Astra Linux с помощью утилиты APT можно выполнить командами, представленными ниже. Для установки компонент, недоступных из репозиториев Astra Linux, перейти к пункту Установка по сценарию или Установка без подключения репозитория (например, при установке на ALSE 1.7 пакета .Net 8.0).
Установка SDK#
Для установки .NET SDK 6.0 на ALSE 1.7 требуется выполнить команды:
sudo apt-get update && \
sudo apt-get install -y dotnet-sdk-6.0
Для установки .NET SDK 8.0 на ALSE 1.8 требуется выполнить команды:
sudo apt-get update && \
sudo apt-get install -y dotnet-sdk-8.0
Примечание
Установка на Astra Linux 1.8 пакета .NET SDK 6.0 и 7.0 выполняется аналогично команде выше, заменив версию пакета на dotnet-sdk-6.0 или dotnet-sdk-7.0 соответственно.
Установка среды выполнения (.NET Runtime)#
Программа ASP.NET Core Runtime позволяет запускать приложения, созданные с помощью .NET, которые не предоставляли среду выполнения.
Для установки .NET Runtime 6.0 на ALSE 1.7 требуется выполнить команды:
sudo apt-get update && \
sudo apt-get install -y dotnet-runtime-6.0
Для установки .NET Runtime 8.0 на ALSE 1.8 требуется выполнить команды:
sudo apt-get update && \
sudo apt-get install -y dotnet-runtime-8.0
Примечание
Установка на Astra Linux 1.8 пакета .NET Runtime версий 7.0 и 6.0 выполняется аналогично команде выше, заменив версию пакета на dotnet-runtime-7.0 или dotnet-runtime-6.0 соответственно.
Информацию о поддерживаемых версиях можно посмотреть по ссылке Политика поддержки .NET и .NET Core.
После установки исполняемый файл dotnet будет располагаться в директории /usr/lib/dotnet/dotnet{version}/dotnet (например, при установке пакета .Net 6.0 исполняемый файл будет находится в каталоге /usr/lib/dotnet/dotnet6/dotnet).
Установка без подключения репозитория#
Ниже описана установка .NET без подключения репозитория от непривилегированного пользователя. Данный способ позволяет установить на AL пакеты доступных версий с официального сайта (возможны варианты версий — 2.1, 2.2, 3.0, 3.1, 5.0, 6.0, 7.0, 8.0, 9.0).
Создать в домашнем каталоге пользователя подкаталог dotnet:
mkdir ~/dotnet
Загрузить архив версии .NET по ссылке: https://dotnet.microsoft.com/en-us/download/dotnet (следует использовать версии для Linux x64). По умолчанию загрузка выполняется в подкаталог “Загрузки” домашнего каталога.
Скопировать (переместить) загруженный архив в созданный каталог ~/dotnet.
Распаковать архив:
tar xf ~/dotnet/dotnet-sdk-*.tar.gz
После необходимо выполнить действия из пункта Установка переменных среды.
Установка по сценарию#
В случае необходимости использования пакетов версий, отличных от доступных из репозиториев Astra Linux, предлагается воспользоваться установкой с помощью сценария, описанной ниже. Данный способ позволяет установить пакеты версий выше 2.1 (соответствует версиям из предыдущего пункта).
Cкрипт установки по dotnet используется для автоматизации установки SDK и среды выполнения. Загрузить скрипт можно по ссылке.
Для установки пакетов требуется загрузить скрипт с помощью wget
:
wget https://dot.net/v1/dotnet-install.sh -O dotnet-install.sh
Выдача прав на запуск скрипта установки как исполняемого файла выполняется командой:
chmod +x ./dotnet-install.sh
Установка необходимого компонента (SDK или Runtime) одним из предложенных ниже способов:
По умолчанию скрипт устанавливает последнюю версию SDK (текущая .NET 8). Чтобы установить последнюю версию, которая может не быть версией LTS, используйте параметр
--version latest
.
./dotnet-install.sh --version latest
Для установки .NET Runtime вместо SDK используйте параметр
--runtime
.
./dotnet-install.sh --version latest --runtime aspnetcore
Можно использовать параметр
--channel
для указания конкретной версии. Следующая команда устанавливает .NET 9.0 SDK (возможны варианты версий — 2.1, 2.2, 3.0, 3.1, 5.0, 6.0, 7.0, 8.0, 9.0).
./dotnet-install.sh --channel 9.0
Совет
С помощью параметра –install-dir можно указать директорию установки.
По умолчанию установка происходит в директорию выполнения скрипта (создается каталог .dotnet).
После необходимо выполнить действия из пункта Установка переменных среды.
Установка переменных среды#
Установите следующие две переменные среды в качестве переменных окружения Astra Linux Special Edition:
DOTNET_ROOT
Эта переменная задает папку, в которую был установлен .NET, например
$HOME/dotnet
:export DOTNET_ROOT=$HOME/dotnet
PATH
Эта переменная должна включать как
DOTNET_ROOT
папку иDOTNET_ROOT/tools
папку:export PATH=$PATH:$DOTNET_ROOT:$DOTNET_ROOT/tools
Зависимости пакетов .NET для Linux#
.NET имеет несколько зависимостей, которые требуются для запуска .NET приложений (подробнее см. в Зависимости и требования к .NET 6.0 и Зависимости и требования к .NET 8.0). При установке .NET SDK и .NET Runtime с помощью установщика APT или с помощью скрипта установка зависимостей происходит автоматически.
.NET зависит от следующих пакетов.
Библиотека GNU C (glibc)
ICU (не требуется, если включаете режим, инвариантной глобализации)
Библиотека сжатия zlib
Команды для установки этих библиотек представлены ниже:
sudo apt-get update \
&& sudo apt-get install -y --no-install-recommends \
libc6 \
libgcc-s1 \
libicu72 \
libssl3 \
libstdc++6 \
tzdata \
zlib1g
Примечание
Для установки зависимостей .Net 6.0 изучите информацию по ссылке.
Проверка установки#
Для просмотра информации о текущих версиях и пакетах используйте команды
dotnet --version
(версия среды .NET) , dotnet --list-sdks
(версии пакетов .NET SDK) и dotnet --list-runtimes
(версии пакетов
.NET Runtime). Общие сведения о среде .NET можно посмотреть командой
dotnet --info
.
Примечание
Рекомендуется устанавливать компоненты из репозиториев Astra Linux, в случае возникновения проблем при установке других версий .Net с помощью APT следует прочитать пункт Проблемы установки или попробовать выполнить Установка без подключения репозитория.
Проблемы установки#
В случае возникновения ошибок при установке пакета следует проверить требуемые версии зависимых компонент, выполнив команду ниже (в примере отображается информация о пакете .Net SDK 6.0 и зависимых библиотеках):
sudo apt show dotnet-sdk-6.0
Далее требуется установить необходимую версию зависимого пакета (например, с помощью утилиты APT).
Пример приложения#
В качестве примера разработки представлено пошаговое создание dotnet web приложения. Подробнее о создании приложений из шаблона в статье.
В качестве редактора исходного кода можно использовать Visual Studio Code. Редактор Visual Studio Code доступен для скачивания с помощью web-браузера по ссылке: https://code.visualstudio.com/docs/?dv=linux64_deb. По умолчанию файл сохраняется в подкаталоге “Загрузки” домашнего каталога и после скачивания может быть установлен командой:
sudo apt install ~/Загрузки/code_*.deb
Важно
Предупреждение “Download is performed unsandboxed”/“Загрузка без ограничения песочницы” при установке пакетов из файлов с помощью apt можно игнорировать.
При установке может потребоваться обновление пакета libxkbfile1 до версии не ниже 1:1.1.0 из репозиториев Debian, для этого потребуется загрузить пакет:
wget http://archive.ubuntu.com/ubuntu/pool/main/libx/libxkbfile/libxkbfile1_1.1.0-1_amd64.deb
Установить пакет можно командой:
sudo apt install ./libxkbfile1_1.1.0-1_amd64.deb
После установки редактор доступен через систему графических меню:
или из терминала:/usr/bin/code
Создание проекта#
Для создания .NET Core Empty приложения необходимо в пустом каталоге терминально выполнить следующую команду:
dotnet new web
В директории создадутся базовые файлы и каталоги.
Файл Program.cs содержит метод Main и создает веб-хост, который запускает приложение. В этом файле настраивается конфигурация веб-сервера и регистрация сервисов приложения.
Файл appsettings.json является конфигурационным файлом приложения (строки подключения к базам данных, настройки логирования и др).
Файл appsettings.Development.json задает дополнительные настройки в среде разработки.
Файл *.csproj содержит описание проекта, включая информацию о фреймворках, зависимостях, задачах сборки и других мета-данных, которые нужны для сборки и публикации проекта.
Файл Properties/launchSettings.json содержит настройки среды разработки, такие как URL приложения, профили запуска для различных конфигураций, переменные среды.
Директория obj содержит сборочные файлы проекта.
Добавление пакетов#
Установка дополнительных пакетов в .Net возможна чрез оболочку. Например, для взаимодействия с СУБД PostgreSQL можно использовать поставщика данных Npgsql. Команда установки пакета представлена ниже:
dotnet add package Npgsql
При выполнении команды происходит автоматическая проверка совместимости устанавливаемого пакета с проектом.
Сборка и запуск приложения#
Сборка проекта и его зависимостей производится командой:
dotnet build
Запуск приложения выполняется командой (выполняет исходный код без дополнительных явных команд компиляции или запуска):
dotnet run
Публикация приложения#
Используется для создания набора файлов для запуска приложения на целевой платформе.
Публикация приложения .NET Core на ALSE выполняется командой:
dotnet publish -c Release -o out -r linux-x64 --self-contained
Параметры команды (являются необязательными):
-c Release — публикация в режиме “Release”;
-o out — задание директории публикации out;
-r linux-x64 — указание целевой платформы (Linux, 64-bit);
–self-contained — приложение будет собрано с включением всех необходимых зависимостей .NET runtime.
В директории out создадутся целевые бинарные файлы (.exe или bin — зависит от указанной целевой платформы, .dll и т.д.), подключаются все необходимые ресурсы (статические файлы, конфигурационные файлы), производится оптимизация кода для целевой платформы и копирование необходимые артефакты в целевую папку.
Важно
При выполнении команды dotnet publish
происходит неявный вызов
команды dotnet restore
, которая восстанавливает и проверяет
совместимость всех зависимостей проекта. Для предотвращения вызова
dotnet restore
необходимо в команду добавить параметр
–no-restore.
После публикации запуск приложения my_app можно выполнить командой (предварительно перейти в директорию расположения файла out):
dotnet my_app.dll
Запуск приложения#
После публикации приложения запуск производится выполнением исполняемого файла с именем приложения. Например, для запуска в Linux системах необходимо терминально выполнить команду:
./my_app