Перейти к содержимому

Dotnet не распознано как имя командлета

  • автор:

Устранение неполадок при использовании средств .NET

При попытке установить или запустить глобальное или локальное средство .NET могут возникнуть проблемы. В этой статье описываются их типичные первопричины и возможные решения.

Установленное средство .NET не запускается

Если средство .NET не запускается, наиболее вероятной причиной является одна из следующих:

  • Исполняемый файл для средства не найден.
  • Не найдена правильная версия среды выполнения .NET.

Исполняемый файл не найден

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

Could not execute because the specified command or file was not found. Possible reasons for this include: * You misspelled a built-in dotnet command. * You intended to execute a .NET program, but dotnet-xyz does not exist. * You intended to run a global tool, but a dotnet-prefixed executable with this name could not be found on the PATH. 

Имя исполняемого файла определяет то, как вызывается средство. Формат описывается в приведенной ниже таблице.

Формат имени исполняемого файла Формат вызова
dotnet-.exe dotnet
.exe
Глобальные средства

Глобальные средства можно установить в каталоге по умолчанию или в выбранном вами расположении. Каталоги по умолчанию:

ОС Путь
Linux/macOS $HOME/.dotnet/tools
Windows %USERPROFILE%\.dotnet\tools

Если вы пытаетесь запустить глобальное средство, убедитесь в том, что переменная среды PATH на компьютере содержит путь, по которому установлено глобальное средство, и что исполняемый файл находится по этому пути.

Интерфейс .NET CLI пытается добавить расположение по умолчанию в переменную среды PATH при первом использовании. Однако есть определенные ситуации, когда расположение не удается добавить в переменную PATH автоматически:

  • используется ОС Linux, и пакет SDK для .NET установлен с помощью файлов .tar.gz, а не apt-get или rpm;
  • используется ОС macOS 10.15 «Catalina» или более поздней версии;
  • используется ОС macOS 10.14 «Mojave» или более ранней версии, и пакет SDK для .NET установлен с помощью файлов .tar.gz, а не .pkg;
  • установлен пакет SDK для .NET Core 3.0, и переменной среды DOTNET_ADD_GLOBAL_TOOLS_TO_PATH присвоено значение false ;
  • установлен пакет SDK для пакет SDK.NET Core 2.2 или более ранней версии, и переменной среды DOTNET_SKIP_FIRST_TIME_EXPERIENCE присвоено значение true .

В этих сценариях или —tool-path при установке средства PATH dotnet переменная среды на компьютере не содержит автоматически путь, по которому установлен глобальный инструмент. В этом случае необходимо добавить в переменную среды PATH расположение этого средства (например, $HOME/.dotnet/tools ) с использованием любого метода обновления переменных среды, предусмотренного в вашей оболочке. Дополнительные сведения см. в разделе о средствах .NET.

Локальные средства

Если вы пытаетесь запустить локальное средство, убедитесь в наличии файла манифеста с именем dotnet-tools.json в текущем каталоге или в любом из его родительских каталогов. Этот файл также может находиться в папке .config где угодно в иерархии папок проекта, а не в корневой папке. Если файл dotnet-tools.json существует, откройте его и проверьте наличие средства, которое вы пытаетесь запустить. Если в файле нет записи для «isRoot»: true , также проверьте наличие дополнительных файлов манифестов средств выше в иерархии файлов.

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

..\\dotnet-

Среда выполнения не найдена

Средства .NET — это приложения, зависящие от платформы, то есть от среды выполнения .NET, установленной на компьютере. Если ожидаемая среда выполнения не найдена, они следуют обычным правилам наката среды выполнения .NET:

  • Накат выполняется к последнему номеру выпуска исправления указанной основной и дополнительной версии.
  • Если соответствующая среда выполнения с соответствующими номерами основной и дополнительной версий отсутствует, используется следующий последний дополнительный номер версии.
  • Накат не выполняется между предварительными версиями среды выполнения или между предварительной версией и версией выпуска. Таким образом, средства .NET, созданные с помощью предварительных версий, должны быть перестроены и повторно опубликованы автором, а затем переустановлены.

Накат не выполняется по умолчанию в двух распространенных сценариях:

  • доступны только более ранние версии среды выполнения; при накате выбираются только более поздние версии среды выполнения;
  • доступны только более поздние основные версии среды выполнения. При накате границы основной версии не пересекаются.

Если приложению не удается найти подходящую среду выполнения, оно не запускается и сообщает об ошибке.

Узнать, какие среды выполнения .NET установлены на компьютере, можно с помощью следующих команд:

dotnet --list-runtimes dotnet --info 

Если вы считаете, что средство должно поддерживать версию среды выполнения, установленную в настоящее время, обратитесь к автору средства и узнайте, может ли он обновить номер версии или перенацелить средство на несколько версий. После того как автор перекомпилирует и повторно опубликует пакет средства в NuGet с обновленным номером версии, вы можете обновить свою копию. Пока же этого не произошло, проще всего установить версию среды выполнения, совместимую со средством, которое вы пытаетесь запустить. Чтобы скачать определенную версию среды выполнения .NET, перейдите на страницу скачиваемых файлов .NET.

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

Не удается установить средство .NET

Установка глобального или локального средства .NET может завершиться сбоем по ряду причин. Если при установке средства происходит сбой, появляется примерно следующее сообщение:

Tool '' failed to install. This failure may have been caused by: * You are attempting to install a preview release and did not use the --version option to specify the version. * A package by this name was found, but it was not a .NET tool. * The required NuGet feed cannot be accessed, perhaps because of an Internet connection problem. * You mistyped the name of the tool. For more reasons, including package naming enforcement, visit https://aka.ms/failure-installing-tool 

Помимо предыдущего сообщения, пользователю также выводятся сообщения NuGet, помогающие диагностировать эти сбои. Сообщение NuGet может помочь определить причину проблемы.

  • Принудительное применение именования пакетов
  • Предварительные версии выпусков
  • Пакет не является инструментом .NET
  • Доступ к веб-каналу NuGet невозможно
  • Неверный идентификатор пакета
  • 401 (Не авторизовано)

Изменение имен пакетов

Корпорация Майкрософт изменила правила в отношении идентификаторов пакетов для средств, из-за чего некоторые средства теперь невозможно найти по прежним именам. Новое руководство заключается в том, что все средства Майкрософт должны быть префиксированы с помощью «Майкрософт». Этот префикс зарезервирован и может использоваться только для пакетов, подписанных с помощью авторизованного сертификата Майкрософт.

Во время перехода некоторые средства Майкрософт будут иметь старую форму идентификатора пакета, а другие — новую форму:

dotnet tool install -g Microsoft. dotnet tool install -g

По мере обновления идентификаторов пакетов необходимо будет перейти на новый идентификатор, чтобы получить последние обновления. Пакеты с упрощенными именами средств станут нерекомендуемыми.

Предварительные выпуски

  • Вы пытаетесь установить предварительный выпуск и не использовали параметр —version для указания версии.

Если средство .NET находится на стадии предварительной версии, это должно быть указано в части имени. Указывать предварительную версию полностью не нужно. Если номера версий имеют ожидаемый формат, можно использовать нечто подобное:

dotnet tool install -g --version 1.1.0-pre

Пакет не является средством .NET

  • Пакет NuGet с таким именем найден, но не является средством .NET.

При попытке установить пакет NuGet, который является обычным пакетом NuGet, а не средством .NET, вы увидите такое сообщение об ошибке:

NU1212: недопустимое сочетание пакетов проекта для . Стиль проекта DotnetToolReference допускает только ссылки типа DotnetTool.

Веб-канал NuGet недоступен

  • Не удается получить доступ к требуемому веб-каналу NuGet, возможно, из-за проблемы с подключением к Интернету.

Для установки средства требуется доступ к веб-каналу NuGet, содержащему пакет средства. Установка завершается сбоем, если этот веб-канал недоступен. Вы можете изменить веб-каналы с помощью nuget.config , запросить определенный файл nuget.config или указать дополнительные веб-каналы с помощью параметра —add-source . По умолчанию NuGet выдает ошибку для каждого веб-канала, к которому не удается подключиться. Флаг —ignore-failed-sources позволяет пропускать недоступные источники.

Неправильный идентификатор пакета

  • Вы неправильно ввели имя средства.

Распространенной причиной ошибок является неправильное имя средства. Такое может случаться из-за ошибок при вводе или из-за того, что средство было перемещено либо устарело. Если средство размещено на сайте NuGet.org, один из способов гарантировать правильность имени — выполнить поиск средства на сайте NuGet.org и скопировать команду установки.

401 (Не авторизовано)

Скорее всего, вы указали альтернативный канал NuGet, и этот канал требует проверки подлинности. Вот несколько разных способов решить проблему:

    Добавьте параметр —ignore-failed-sources , чтобы обойти ошибку из закрытого канала и использовать общедоступный канал Майкрософт. Если вы устанавливаете средство из канала Microsoft NuGet, пользовательский канал возвращает эту ошибку, прежде чем канал Microsoft NuGet вернет результат. Ошибка завершает запрос, отменяя любые другие ожидающие запросы канала, который может быть каналом Microsoft NuGet. Добавление параметра —ignore-failed-sources приводит к тому, что команда обрабатывает эту ошибку как предупреждение и позволяет другим каналам обработать запрос.

dotnet tool install -g --ignore-failed-sources
dotnet tool install -g --add-source 'https://api.nuget.org/v3/index.json' --ignore-failed-sources
dotnet tool install -g --configfile "./nuget.config"

Ошибка при запуске C# в VS code

Переустановил VS code и при запуске программы в терминале выдает такую ошибку: scriptcs : Имя «scriptcs» не распознано как имя командлета, функции, файла сценария или выполняемой программы. Проверьте правильность написания имени, а также наличие и правильность пути, после чего повторите попытку.
строка:1 знак:1 +scriptcs «c:\Project\OOP\OOP10.1\OOP10.1.cs»+ ~~~~~~~~ + CategoryInfo : ObjectNotFound : (scriptcs:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException Что делать?

Отслеживать
задан 11 мар 2023 в 20:02
15 6 6 бронзовых знаков

Не лучшее вы средство взяли для обучения. Советую поставить полноценную IDE, которая будет вам все подсказывать, рассказывать, и т.д. Касательно ошибки — для запуска проекта, нужно установить специальное расширение (поиск по C#), а также настроить файл launch.json (или что-то такое), в котором будет прописано как, с какими аргументами, через что, будет запущен проект. Обычно Code предлагает сделать такой файл автоматически, при открытии проекта. Так что смотрите, есть расширение? А файл запуска? А в нем пути верные? А dotnet установлен? Команда dotnet работает?

11 мар 2023 в 20:20

Вот кстати документация, в которой пункт 7 и рассказывает про запуск. Также посмотрите раздел «Отладка приложения».

11 мар 2023 в 20:22

@EvgeniyZ запускаю программу как раз через команду в терминале dotnet run. Стоит вроде как обычное расширение Code Runner (18 млн скачиваний). Сейчас посмотрю документацию

Dotnet не распознано как имя командлета

Создадим первую программу на языке C#. Что для этого нужно? Прежде всего для написания кода программы нам понадобится текстовый редактор. В принципе можно выбрать любой понравившийся текстовый редактор, например, встроенный в Windows по умолчанию блокнот. Но я в данном случае буду ориентироваться на более изощренный текстовый редактор Visual Studio Code . Данный текстовый редактор доступен для всех основных операционных систем: Windows, MacOS, Linux. Он доступен по ссылке загрузить Visual Studio Code

C# в Visual Studio Code

Второй необходимый компонент для создания программ — компилятор. Для компиляции, построения, запуска и ряда других задач Microsoft предоставляет набор инструментов (или еще называется фреймворком), который называется .NET SDK . .NET SDK является кроссплатформенным фреймворком и доступен для всех основных операционных систем.

Установка на Linux

Для операционных систем на базе Linux можно использовать разные методы установки: установить через пакетный менеджер, установить вручную или с помощью скрипта. Рассмотрим самый простой способ — установки через пакетный менеджер. Так, для установки .NET SDK 8.0 на ОС Ubuntu и Debian через пакетный менеджер apt надо выполнить следующую команду

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

Для установки на Fedora через пакетный менеджер dnf применяется команда

sudo dnf install dotnet-sdk-8.0

На других системах на базе Linux могут применяться другие пакетные менеджеры.

Установка на Windows

Для установки .NET SDK под Windows можно использовать специальный установщик. Загрузим его с официального сайта со страницы https://dotnet.microsoft.com/en-us/download.

Загрузка .NET

На странице https://dotnet.microsoft.com/en-us/download/dotnet/8.0 при необходимости можно найти все возможные варианты SDK под различные архитектуры и системы.

После загрузки запустим установщик .NET SDK:

Установка .NET SDK для программирования на C#

Установка на MacOS

Для MacOS самый простой способ установки также заключается в использовании программу установщика, которая доступна на официальном сайте на странице https://dotnet.microsoft.com/en-us/download.

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

После установки, чтобы убедиться, что все установлено и настроено правильно, мы можем проверить версию .NET, выполнив в командной строке/консоли команду dotnet —version :

C:\Users\eugen>dotnet --version 8.0.100 C:\Users\eugen>

На одной машине может быть установлено одновременно несколько версий .NET SDK. Для проверки установленных версий можно использовать команду dotnet —list-sdks :

C:\Users\eugen>dotnet --list-sdks 8.0.100 [C:\Program Files\dotnet\sdk] C:\Users\eugen>

Создание первой программы на C#

И после установки .NET SDK мы можем начать свою славную поступь в прекрасный мир программирования на C#. Создадим первый проект. Для этого будем использовать набор консольных утилит .NET CLI.

И вначале создадим каталог для проектов на .NET (вручную или с помощью команды mkdir ). Пусть каталог будет dotnet и будет располагаться в текущей папке пользователя. Откроем терминал и перейдем к этому каталогу с помощью команды cd .

C:\Users\eugen>mkdir dotnet C:\Users\eugen>cd dotnet C:\Users\eugen\dotnet>

Для создания проекта в .NET CLI применяется команда dotnet new , которой передается тип проекта. Мы будем создавать консольное приложение, поэтому будем использовать тип console . Кроме того, с помощь Итак, в введем в терминале следующую команду:

dotnet new console -o helloapp

В данном случае мы указываем, что создаваемый проект будет представлять консольное приложение (console), а с помощью опции -o можно указать название проекта. То есть проект будет называться helloapp. При выполнении команды консоль отобразит некоторую базовую информацию

C:\Users\eugen\dotnet>dotnet new console -o helloapp Шаблон "Консольное приложение" успешно создан. Идет обработка действий после создания. Восстановление C:\Users\eugen\dotnet\helloapp\helloapp.csproj: Определение проектов для восстановления. Восстановлен C:\Users\eugen\dotnet\helloapp\helloapp.csproj (за 1,01 sec). Восстановление выполнено. C:\Users\eugen\dotnet>

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

.NET CLI Создание проекта

В частности, мы можем найти в папке проекта файл helloapp.csproj . Это главный файл проекта, который определяет его конфигурацию. Мы можем открыть его в любом текстовом редакторе, просмотреть и при необходимости изменить.

И, кроме того, по умолчанию создается главный файл программы Program.cs со следующим содержимым:

// See https://aka.ms/new-console-template for more information Console.WriteLine("Hello, World!");

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

В принципе этот минимальный проект уже можно запускать. Для запуска проекта перейдем в консоли в папку проекта helloapp и для выполнения программы введем в консоли команду dotnet run :

C:\Users\eugen\dotnet> cd helloapp C:\Users\eugen\dotnet\helloapp>dotnet run Hello, World! C:\Users\eugen\dotnet\helloapp>

После выполнения команды в проекте в папке bin\Debug\net8.0 появятся файлы программы (на windows файлы helloapp.dll и helloapp.exe), которые можно вручную запустить на компьютере, где установлен .NET 7.

Компиляция программы C# с помощью .NET CLI

Теперь изменим весь код программы. Для этого откроем файл Program.cs в каком-нибудь текстовом редакторе и изменим его код на следующий:

Console.Write("Введите свое имя: "); var name = Console.ReadLine(); // вводим имя Console.WriteLine($"Привет "); // выводим имя на консоль

Изменение кода программы на C# и .NET

По сравнению с автоматически сгенерированным кодом я внес несколько изменений. Теперь первой строкой выводится приглашение к вводу.

Console.Write("Введите свое имя: ");

Метод Console.Write() выводит на консоль некоторую строка. В данном случае это строка «Введите свое имя: «.

На второй строке определяется строковая переменная name, в которую пользователь вводит информацию с консоли:

var name = Console.ReadLine();

Ключевое слово var указывает на определение переменной. В данном случае переменная называется name . И ей присваивается результат метода Console.ReadLine() , который позволяет считать с консоли введенную строку. То есть мы введем в консоли строку (точнее имя), и эта строка окажется в переменой name .

Затем введенное имя выводится на консоль:

Console.WriteLine($"Привет ");

Чтобы ввести значение переменной name внутрь выводимой на консоль строки, применяются фигурные скобки <>. То есть при выводе строки на консоль выражение будет заменяться на значение переменной name — введенное имя.

Однако чтобы можно было вводить таким образом значения переменных внутрь строки, перед строкой указывается знак доллара $.

Теперь протестируем проект, запустив его на выполнение с помощью команды dotnet run :

C:\Users\eugen\dotnet\helloapp>dotnet run Введите свое имя: Евгений Привет Евгений C:\Users\eugen\dotnet\helloapp>

Проблема в терминале VScode, которой нет в командной строке Windows

При вводе dotnet new console в командной строке Windows проблем не возникает, но вот при вводе той же команды в VSCode выдает ошибку:
dotnet : Имя «dotnet» не распознано как имя командлета, функции, файла сценария или выполняемой программы. Проверьте правильность написания имени, а также наличие и прав
ильность пути, после чего повторите попытку.
строка:1 знак:1
+ dotnet new console
+ ~~~~~~
+ CategoryInfo : ObjectNotFound: (dotnet:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

Лучший ответ

VSСode использует PowerShell, а не CMD . может, в этом проблема ?

FIFOXМастер (1327) 1 год назад

В PowerShell тоже работает

Остальные ответы

школол, скачай dot net sdk и добавь путь в Path

FIFOXМастер (1327) 1 год назад

А то что в powershell и консоли асе работает тебя не смущает?

Редис Александрович Оракул (75727) FIFOX, меня обычно только смущает, когда люди задают вопросы, а потом не могут понять что от них хотят))))

Похожие вопросы

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *