Поделиться через


Установка пакета SDK для .NET с помощью Snap

В этой статье описывается установка пакета оснастки пакета sdk для .NET. Пакеты оснастки пакета SDK для .NET предоставляются и поддерживаются каноническим пакетом. Пакеты Snap — это отличная альтернатива диспетчеру пакетов, встроенному в дистрибутив Linux.

Привязка — это пакет приложения и его зависимости, которые работают во многих разных дистрибутивах Linux. Snap-пакеты можно найти и установить с помощью Snap Store. Дополнительные сведения о Snap см . в кратком руководстве.

Внимание

При оснастки установки .NET могут возникнуть проблемы с запуском средств .NET. Если вы хотите использовать средства .NET, рекомендуется установить .NET с помощью dotnet-install скрипта или диспетчера пакетов для конкретного дистрибутива Linux.

Известная проблема, из-за dotnet watch которой команда не работает при установке .NET через Snap.

Если вы собираетесь использовать средства .NET или dotnet watch команду, рекомендуется установить .NET с помощью скриптаdotnet-install.

Необходимые компоненты

  • Дистрибутив Linux, поддерживающий привязку.
  • snapd управляющая программа оснастки.

Дистрибутив Linux может уже включать привязку. Попробуйте запустить snap из терминала, чтобы узнать, работает ли команда. Список поддерживаемых дистрибутивов Linux и инструкции по установке оснастки см. в разделе "Установка snapd".

Выпуски .NET

Корпорация Майкрософт публикует .NET в двух разных политиках поддержки, долгосрочной поддержке (LTS) и стандартной поддержке терминов (STS). Качество всех выпусков одинаково. Единственное различие заключается в продолжительности поддержки. Выпуски LTS получают бесплатную поддержку и исправления в течение трех лет. Выпуски STS получают бесплатную поддержку и исправления в течение 18 месяцев. Дополнительные сведения см. в статье о политике поддержки .NET.

В настоящее время поддерживаются версии .NET, поддерживаемые корпорацией Майкрософт:

  • 8.0 (LTS)— поддержка заканчивается 10 ноября 2026 г.
  • 6.0 (LTS)— поддержка заканчивается 12 ноября 2024 г.

Другие сущности, создающие и выпускающие .NET, могут вводить различные политики поддержки. Обязательно ознакомьтесь с ними, чтобы понять, как поддерживается .NET.

1. Установка пакета SDK

Пакеты Snap для пакета SDK для .NET публикуются с одним и тем же идентификатором: dotnet-sdk. Конкретную версию пакета SDK можно установить, указав канал. Пакет SDK включает как среду выполнения ASP.NET Core, так и среду выполнения .NET, версию в пакет SDK.

Совет

На странице пакета SDK для Snapcraft .NET содержатся инструкции по установке Snapcraft и .NET для конкретного дистрибутива.

  1. Откройте окно терминала.

  2. Используется snap install для установки пакета оснастки пакета sdk для .NET. Например, следующая команда устанавливает latest/stable канал, который является значением по умолчанию.

    sudo snap install dotnet-sdk --classic
    
    • Параметр --classic является обязательным.
    • --channel Используйте параметр, чтобы указать, какая версия требуется установить. Если этот параметр отсутствует, используйте latest/stable. Например, --channel 8.0/stable устанавливается пакет SDK для .NET 8.0.

dotnet Псевдоним оснастки автоматически создается и сопоставляется с командой пакета привязкиdotnet.

В следующей таблице перечислены каналы пакетов, которые можно установить:

Версия .NET Канал пакета привязки
8 (LTS) 8.0/stable
latest/stable
lts/stable
7 7.0/stable (вне поддержки)
6 (LTS) 6.0/stable
5 5.0/stable (вне поддержки)
3.1 3.1/stable (вне поддержки)
2.1 2.1/stable (вне поддержки)

2. Экспорт расположения установки

Переменная среды DOTNET_ROOT часто используется различными средствами для определения места установки .NET. При установке .NET с помощью snap-пакета эта переменная среды не настраивается. Вам нужно настроить переменную среды DOTNET_ROOT в своем профиле. Путь к snap-пакету использует следующий формат: /snap/{package}/current.

export DOTNET_ROOT=/snap/dotnet-sdk/current

Экспорт переменной среды безвозвратно

Предыдущая команда export задает переменную среды только для сеанса терминала, в котором она была запущена.

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

  • Оболочка Bash: ~/.bash_profile, ~/.bashrc
  • Оболочка Korn: ~/.kshrc или .profile
  • Z Shell: _~/.zshrc* или .zprofile

Измените соответствующий исходный файл для своей оболочки и добавьте export DOTNET_ROOT=/snap/dotnet-sdk/current.

3. Использование интерфейса командной строки .NET

Откройте терминал и тип dotnet.

dotnet

Выводится следующий результат.

Usage: dotnet [options]
Usage: dotnet [path-to-application]

Options:
  -h|--help         Display help.
  --info            Display .NET information.
  --list-sdks       Display the installed SDKs.
  --list-runtimes   Display the installed runtimes.

path-to-application:
  The path to an application .dll file to execute.

Сведения об использовании .NET CLI см. в обзоре .NET CLI.

Устранение неполадок

Команда терминала dotnet не работает

Пакеты привязки могут сопоставить псевдоним с командой, предоставленной пакетом. По умолчанию пакеты привязки пакета SDK для .NET создают псевдоним для dotnet команды. Если псевдоним не был создан или удален ранее, в следующей команде показано, как сопоставить псевдоним:

sudo snap alias dotnet-sdk.dotnet dotnet

Не удается установить Snap в WSL2

systemd необходимо включить в экземпляре WSL2 перед установкой Оснастки.

  1. Откройте /etc/wsl.conf в текстовом редакторе выбранный вариант.

  2. Вставьте следующую конфигурацию:

    [boot]
    systemd=true
    
  3. Сохраните файл и перезапустите экземпляр WSL2 с помощью PowerShell. Используйте команду wsl.exe --shutdown.

Не удается разрешить команду dotnet или пакет SDK

Обычно для других приложений, таких как интегрированная среда разработки кода или расширение в Visual Studio Code, можно попытаться устранить расположение пакета SDK для .NET. Как правило, обнаружение выполняется путем проверки переменной DOTNET_ROOT среды или определения расположения исполняемого dotnet файла. Установленный пакет SDK для .NET может запутать эти приложения. Если эти приложения не могут устранить пакет SDK для .NET, отображается ошибка, аналогичная одному из следующих сообщений:

  • Не удалось найти указанный пакет SDK "Microsoft.NET.Sdk"
  • Не удалось найти указанный пакет SDK "Microsoft.NET.Sdk.Web"
  • Не удалось найти указанный пакет SDK "'Microsoft.NET.Sdk.Razor"

Чтобы устранить проблему, выполните следующие действия.

  1. Убедитесь, что вы постоянно экспортируете DOTNET_ROOT переменную среды.

  2. Попробуйте связать исполняемый файл привязки dotnet с расположением, которое ищет программа.

    Ниже приведены два распространенных dotnet пути, по которому ищется команда:

    • /usr/local/bin/dotnet
    • /usr/share/dotnet

    Используйте следующую команду, чтобы создать символьную ссылку на пакет привязки:

    ln -s /snap/dotnet-sdk/current/dotnet /usr/local/bin/dotnet
    

Ошибки сертификатов TLS/SSL

При установке .NET с помощью Оснастки возможно, что на некоторых дистрибутивах не найдены СЕРТИФИКАТЫ TLS/SSL .NET, и во время этого может возникнуть ошибка:restore

Processing post-creation actions...
Running 'dotnet restore' on /home/myhome/test/test.csproj...
  Restoring packages for /home/myhome/test/test.csproj...
/snap/dotnet-sdk/27/sdk/2.2.103/NuGet.targets(114,5): error : Unable to load the service index for source https://api.nuget.org/v3/index.json. [/home/myhome/test/test.csproj]
/snap/dotnet-sdk/27/sdk/2.2.103/NuGet.targets(114,5): error :   The SSL connection could not be established, see inner exception. [/home/myhome/test/test.csproj]
/snap/dotnet-sdk/27/sdk/2.2.103/NuGet.targets(114,5): error :   The remote certificate is invalid according to the validation procedure. [/home/myhome/test/test.csproj]

Чтобы устранить эту проблему, задайте несколько переменных среды:

export SSL_CERT_FILE=[path-to-certificate-file]
export SSL_CERT_DIR=/dev/null

Расположение сертификата зависит от распределения. Ниже приведены расположения для дистрибутивов, в которых обнаружена проблема:

Распределение Расположение
Fedora /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
OpenSUSE /etc/ssl/ca-bundle.pem
Solus /etc/ssl/certs/ca-certificates.crt