.Net#
.NET — это бесплатная кроссплатформенная высокопроизводительная платформа для разработки приложений с открытым кодом, поддерживаемая корпорацией Майкрософт. Язык C# является самым популярным языком для платформы .NET.
ALSE |
Debian |
.NET |
---|---|---|
1.8 |
12 (Bookworm) |
8.0, 7.0, 6.0 |
1.7 |
10 (Buster) |
6.0 |
В репозиториях Astra Linux Special Edition платформа .NET включает следующие компоненты для разработки на C#:
Среда выполнения (.Net Runtime) — выполняет код приложения.
Библиотеки — предоставляют служебные функции, такие как синтаксический анализ JSON.
Компилятор Roslyn — компилирует исходный код C# в исполняемый код.
Пакет SDK и другие средства представляют инструменты создания и мониторинга приложений.
Стеки приложений, такие как ASP.NET Core, которые позволяют создавать приложения.
Для разработки .NET приложений нужно установить пакет SDK (который включает среду выполнения). Для запуска .NET приложений на Astra Linux Special Edition достаточно установить среду выполнения (пакет .NET Runtime). Все эти средства содержатся в пакетах dotnet6/dotnet7/dotnet8 соответствующей версионности (установка необходимой версии осуществляется с помощью утилиты APT).
Пакет |
Версия |
Репозиторий |
Описание |
---|---|---|---|
dotnet8 |
8.0.100-8.0.0-1astra~1.8.0+b2 |
extended |
Инструменты .NET CLI и среда выполнения |
dotnet-sdk-8.0 |
8.0.100-1astra~1.8.0+b2 |
extended |
Комплект разработки ПО на .NET 8.0 |
dotnet-runtime-8.0 |
8.0.0-1astra~1.8.0+b2 |
extended |
Среда выполнения .NET (исключая веб-приложения) |
aspnetcore-runtime-8.0 |
8.0.0-1astra~1.8.0+b2 |
extended |
Среда выполнения ASP.NET Core (веб-приложения) |
Пакет |
Версия |
Репозиторий |
Описание |
---|---|---|---|
1.95.3 |
microsoft |
Редактор исходного кода |
|
2024.3.4 |
jetbrains |
IDE для разработки на платформе .NET |
Предварительные шаги#
Перед тем как устанавливать любые пакеты проверим подключение репозиториев Astra Linux командой в консоли:
cat /etc/apt/sources.list
Для Astra Linux Special Edition 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 Special Edition 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 (из репозиториев ALSE, доступные версии представлены в таблице ниже) — и альтернативные — с помощью сценария установки или загрузкой архива.
Установка с помощью менеджера пакетов (APT)#
Установку доступных дистрибутивов .Net из репозиториев Astra Linux с помощью утилиты APT можно выполнить командами, представленными ниже. Для установки компонент, недоступных из репозиториев Astra Linux, перейти к пункту Установка по сценарию или Установка без подключения репозитория (например, при установке на ALSE 1.7 пакета .Net 8.0).
Установка SDK#
Для установки .NET SDK 8.0 на ALSE 1.8 требуется выполнить команды:
sudo apt-get update && \
sudo apt-get install -y dotnet-sdk-8.0
Примечание
Установка на Astra Linux Special Edition 1.8 пакета .NET SDK 6.0 и 7.0 выполняется аналогично команде выше, заменив версию пакета на dotnet-sdk-6.0 или dotnet-sdk-7.0 соответственно.
Установка среды выполнения (.NET Runtime)#
Программа .NET Runtime позволяет запускать приложения, созданные с помощью .NET, которые не предоставляли среду выполнения.
Для установки .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 без подключения репозитория от непривилегированного пользователя. Данный способ позволяет установить на ALSE пакеты доступных версий с официального сайта (возможны варианты версий — 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 dotnet
Можно использовать параметр
--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 приложения необходимо в пустом каталоге терминально выполнить следующую команду:
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 на 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