.NetCore#

В статье показано, как в Astra Linux Special Edition установить пакеты .NET SDK и .NET Runtime с помощью сценария установки и разработать простое веб-приложение. Подробная инструкция по установке доступна по ссылке.

.NET Core — универсальная платформа разработки с открытым кодом, поддерживаемая корпорацией Microsoft и сообществом .NET на сайте GitHub. .NET Core является кроссплатформенной (поддерживается на Windows, MacOS и Linux) и может использоваться для разработки приложения различных типов. Сведения о поддерживаемых языках и платформах в среде .NET Core, а также основные API-интерфейсы см. в этой статье.

Для разработки .NET Core приложений нужно установить пакет SDK (который включает среду выполнения). Для запуска .NET Core приложений на Astra Linux Special Edition достаточно установить среду выполнения (пакет .NET Runtime).

1. Методы установки#

В этом пункте описаны три варианта установки: рекомендуемый — с помощью менеджера пакетов APT (из репозиториев AL, доступные версии представлены в таблице ниже) — и альтернативные — с помощью сценария установки или загрузкой архива.

Таблица доступных дистрибутивов .Net из репозиториев ALSE

ALSE

Debian

.NET

1.8

12 (Bookworm)

8.0, 7.0, 6.0

1.7

10 ( Buster)

6.0

Примечание

Версия .NET 7.0 доступна в ALSE 1.8, однако больше не поддерживается Microsoft.

Информацию о наименовании .Net компонент и доступных версиях на Astra Linux Special Edition можно посмотреть с помощью команды:

sudo apt search dotnet

1.1. Установка с помощью менеджера пакетов (APT)#

Установку доступных дистрибутивов .Net из репозиториев Astra Linux с помощью утилиты APT можно выполнить командами, представленными ниже. Для установки компонент, недоступных из репозиториев Astra Linux, перейти к пункту Установка по сценарию или Установка без подключения репозитория (например, при установке на ALSE 1.7 пакета .Net 8.0).

Установка SDK#

Пакет .NET SDK позволяет разрабатывать приложения с помощью .NET (подробнее в см. Обзор .NET CLI).

Для установки .NET SDK 6.0 на ALSE 1.7 или 1.8 требуется выполнить команды ниже:

sudo apt-get update && \
  sudo apt-get install -y dotnet-sdk-6.0

Примечание

Поддержка версии .NET 6.0 заканчивается 12 ноября 2024 г. (см. Политика поддержки .NET и .NET Core).

Для установки .NET SDK 8.0 на ALSE 1.8 требуется выполнить команды ниже:

sudo apt-get update && \
  sudo apt-get install -y dotnet-sdk-8.0

Совет

С помощью параметра –install-dir можно указать директорию установки.

Для установки .NET SDK 7.0 на ALSE 1.8 требуется выполнить команды ниже:

sudo apt-get update && \
  sudo apt-get install -y dotnet-sdk-7.0

Примечание

Версия .NET 7.0 доступна в ALSE 1.8, однако больше не поддерживается Microsoft (см. Политика поддержки .NET и .NET Core).

Установка среды выполнения (.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

Примечание

Установка на ALSE 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).

1.2. Установка без подключения репозитория#

Ниже описана установка .NET без подключения репозитория от непривилегированного пользователя. Данный способ позволяет установить на AL пакеты доступных версий с официального сайта (возможны варианты версий — 2.1, 2.2, 3.0, 3.1, 5.0, 6.0, 7.0, 8.0, 9.0).

  1. Создать в домашнем каталоге пользователя подкаталог dotnet:

mkdir ~/dotnet
  1. Загрузить архив версии .NET по ссылке: https://dotnet.microsoft.com/en-us/download/dotnet (следует использовать версии для Linux x64). По умолчанию загрузка выполняется в подкаталог “Загрузки” домашнего каталога.

  2. Скопировать (переместить) загруженный архив в созданный каталог ~/dotnet.

  3. Распаковать архив:

tar xf ~/dotnet/dotnet-sdk-*.tar.gz

После необходимо выполнить действия из пункта Установка переменных среды.

1.3. Установка по сценарию#

В случае необходимости использования пакетов версий, отличных от доступных из репозиториев AL, предлагается воспользоваться установкой с помощью сценария, описанной ниже. Данный способ позволяет установить пакеты версий выше 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) одним из предложенных ниже способов:

  1. По умолчанию скрипт устанавливает последнюю версию SDK (текущая .NET 8). Чтобы установить последнюю версию, которая может не быть версией LTS, используйте параметр --version latest.

./dotnet-install.sh --version latest
  1. Для установки .NET Runtime вместо SDK используйте параметр --runtime.

./dotnet-install.sh --version latest --runtime aspnetcore
  1. Можно использовать параметр --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).

После необходимо выполнить действия из пункта Установка переменных среды.

1.4. Установка переменных среды#

Установите следующие две переменные среды в качестве переменных окружения 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
    

1.5. Зависимости пакетов .NET для Linux#

.NET имеет несколько зависимостей, которые требуются для запуска .NET приложений (подробнее см. в Зависимости и требования к .NET 6.0 и Зависимости и требования к .NET 8.0). При установке .NET SDK и .NET Runtime с помощью установщика APT или с помощью скрипта установка зависимостей происходит автоматически.

.NET зависит от следующих пакетов.

Команды для установки этих библиотек представлены ниже:

sudo apt-get update \
    && sudo apt-get install -y --no-install-recommends \
     libc6 \
     libgcc-s1 \
     libicu72 \
     libssl3 \
     libstdc++6 \
     tzdata \
     zlib1g

Примечание

Для установки зависимостей .Net 6.0 изучите информацию по ссылке.

2. Проверка установки#

Для просмотра информации о текущих версиях и пакетах используйте команды dotnet --version (версия среды .NET) , dotnet --list-sdks (версии пакетов .NET SDK) и dotnet --list-runtimes(версии пакетов .NET Runtime). Общие сведения о среде .NET можно посмотреть командой dotnet --info.

Примечание

Рекомендуется устанавливать компоненты из репозиториев AL, в случае возникновения проблем при установке других версий .Net с помощью APT следует прочитать пункт Проблемы установки или попробовать выполнить Установка без подключения репозитория.

Проблемы установки#

В случае возникновения ошибок при установке пакета следует проверить требуемые версии зависимых компонент, выполнив команду ниже (в примере отображается информация о пакете .Net SDK 6.0 и зависимых библиотеках):

sudo apt show dotnet-sdk-6.0

Далее требуется установить необходимую версию зависимого пакета (например, с помощью утилиты APT).

3. Пример приложения#

В качестве примера разработки представлено пошаговое создание 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

После установки редактор доступен через систему графических меню: Пуск ‣ Утилиты ‣ AVisual Studio Code или из терминала:

/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

4. Запуск приложения#

После публикации приложения запуск производится выполнением исполняемого файла с именем приложения. Например, для запуска в Linux системах необходимо терминально выполнить команду:

./my_app