Конфигурация среды dotnetup

Note

dotnetup находится в общедоступной предварительной версии. Его функции и поведение могут измениться до выхода в общую доступность.

Dotnetup может настроить среду, чтобы сделать пакеты SDK .NET и среды выполнения, которые он устанавливает, доступными. Это делается, задав следующие переменные среды:

  • PATH: делает dotnet команду доступной в командной строке. Средства разработки, такие как Visual Studio или комплект средств разработки для C#, также используют PATH для поиска .NET SDK и сред выполнения.
  • DOTNET_ROOT: сообщает исполняемым файлам приложений, зависящим от платформы, где найти установку .NET и ее общие среды выполнения.

Dotnetup поддерживает различные режимы доступа, которые определяют, где задаются эти переменные среды. Вы можете выбрать режим доступа при первоначальной установке dotnetup или позже с помощью команды dotnetup env.

Режим доступа Behavior
none Не изменяет эти переменные среды. Запустите .NET с помощью dotnetup dotnet.
shell Изменяет профиль оболочки для задания этих переменных среды. Процессы, запущенные из этой оболочки, используют пакеты SDK и среды выполнения .NET, установленные dotnetup.
everywhere Изменяет системную среду PATH и задает переменную среды уровня пользователя DOTNET_ROOT Доступно только в Windows.

По умолчанию dotnetup также добавляет себя в PATH независимо от режима доступа. Это можно контролировать с помощью dotnetup env set --dotnetup-on-path <true|false>.

Соображения для режима Everywhere

Режим Everywhere используется в Windows по умолчанию, чтобы пакеты SDK и среды выполнения, установленные с помощью dotnetup, были доступны из средств разработки и из терминалов, использующих cmd в качестве оболочки. Однако есть некоторые моменты, которые следует учитывать, главным образом в том, как он взаимодействует с установками на уровне компьютера пакета SDK для .NET и среды выполнения.

Установки на уровне компьютера .NET находятся в папке Program Files. Их можно установить с помощью установщиков, которые можно скачать на странице загрузки .NET. Visual Studio устанавливает пакет SDK .NET и среду выполнения на уровне компьютера, а установщики для приложений, зависящих от платформы, также могут устанавливать среду выполнения .NET, от которой они зависят, в общесистемное расположение.

В режиме everywhere локальный для пользователя корневой каталог установки .NET, управляемый dotnetup, переопределит общесистемный корневой каталог установки .NET. Это означает, что .NET пакеты SDK и среды выполнения, установленные в Program Files, не будут доступны. Проекты, зависящие от этих пакетов SDK, не удастся собрать, если соответствующий пакет SDK не установлен. Если соответствующая среда выполнения не установлена, приложения, зависящие от платформы .NET, не смогут запускаться с ошибкой, которая говорит: "Для запуска этого приложения необходимо установить или обновить .NET".

Чтобы избежать этих сбоев, начальная установка dotnetup предлагает возможность переноса существующих установленных в системе .NET SDK и сред выполнения. Вы также можете явно выполнить их миграцию, запустив команду dotnetup sdk install --migrate-from-system для пакетов SDK или dotnetup runtime install --migrate-from-system для сред выполнения.

Для включения или отключения режима «Везде» требуется изменить системную переменную PATH, для чего нужны права администратора (например, подтверждение запроса UAC или «Запуск от имени администратора»). Это связано с тем, что установщики .NET на уровне компьютера добавляют корневой каталог установки .NET в Program Files в системный PATH, а системный PATH имеет приоритет над PATH на уровне пользователя при поиске команд. Поэтому dotnetup необходимо изменить системный ПУТЬ, чтобы корневой каталог установки .NET от dotnetup имел приоритет.

Так как системный PATH применяется ко всем пользователям, эти изменения могут повлиять на других пользователей. Путь, добавленный в системный ПУТЬ, по умолчанию находится в локальной папке AppData пользователя. Это обычно не будет доступно другим пользователям, поэтому это не повлияет на то, какая версия dotnet будет разрешена. Однако процессы с повышенными привилегиями (т. е. запущенные от имени администратора) смогут считывать путь и в конечном итоге неожиданно разрешать пакеты SDK или среды выполнения .NET другого пользователя.

Поддерживаемые оболочки

Поддержка создания профилей и скриптов:

  • Bash
  • Z shell
  • Рыба
  • Pwsh (PowerShell Core)
  • PowerShell

Если вы не передаёте --shell, dotnetup обнаруживает текущую оболочку. Используйте явную оболочку, если обнаружение недоступно или если требуется обновить другой профиль:

dotnetup env set shell --shell zsh

Хранимое и наблюдаемое состояние

dotnetup.config.json сохраняет выбранный режим доступа и должен ли dotnetup быть включен на PATH. dotnetup env show сравнивает эту конфигурацию с текущим профилем и средой. Он сообщает о дрейфе, если наблюдаемое состояние не соответствует.

Повторно примените хранимую конфигурацию для исправления дрейфа:

dotnetup env set

Текущий терминал

Изменения в профиле и среде Windows не перезаписывают среду текущего процесса. Откройте новый терминал, выполните source для изменённого профиля или оцените созданный скрипт.

Для оболочки Bash или Z:

eval "$(dotnetup env script)"

Для PowerShell:

dotnetup env script --shell pwsh | Invoke-Expression

env script следует сохранённой конфигурации, если не передавать параметры выбора. Используйте --dotnet, --dotnetupили оба для выбора созданного содержимого.

Удалить конфигурацию среды

Удалите все связи управляемой среды:

dotnetup env clear

Эта команда эквивалентна:

dotnetup env set none --dotnetup-on-path false

Он не удаляет пакеты SDK или среды выполнения.