Имя make не распознано как имя командлета
Перейти к содержимому

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

  • автор:

Устранение неполадок при использовании средств .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"

Подскажите пожалуйста, exe`шник после сборки через Сmake и mingw32-make не запускается

У меня установлен Cmake и MinGW. Оба находятся в переменных средах. Хочу собрать проект. Использую команду cmake .. -G «MinGW Makefiles», после этого запускаю команду mingw32-make. Все собирается, экзешник появляется, но не запускается. Ошибка: Точка входа в процедуру _ZdlPvj не найдена в библиотеке DLL. CMakeLists.txt:

cmake_minimum_required(VERSION 3.0) set(CMAKE_BUILD_TYPE Release) set(CMAKE_CXX_FLAGS "$ -std=c++14 -Wall") project(Packman) add_executable(main main.cpp Constants.h Game.h Ghost.h ICharacter.h Packman.h Pellet.h setConsoleAtributes.h Game.cpp Ghost.cpp Pellet.cpp Packman.cpp SetConsoleAtributes.cpp) 

Запускаю через g++ командой: g++ -o name.exe -std=c++14 -static-libgcc -static-libstdc++ main.cpp Constants.h Game.h Ghost.h ICharacter.h Packman.h Pellet.h setConsoleAtributes.h Game.cpp Ghost.cpp Pellet.cpp Packman.cpp SetConsoleAtributes.cpp и все собирается. Но через Cmake не получается. Подскажите, в чем может быть проблема? Думаю, что в статической линковке, но я не уверен. Если да, то как правильно ее настроить через Cmake? Спасибо, буду рад любой помощи.

Laravel на Homestead. Ошибка при запуске php artisan — имя «php» не распознано как имя командлета, функции. Как исправить?

Согласно документации, установил и развернул проект на Laravel под Homestead, Vagrant up- все работает.
Но когда пытаюсь из директории laravel в консоле запустить команду php artisan make:controller PhotoController —resource

PS E:\for_laravel\projects\test\laravel> php artisan make:controller PhotoController --resource php : Имя "php" не распознано как имя командлета, функции, файла сценария или выполняемой программы. Проверьте правильность написания имени, а также наличие и правильность пути, после чего повторите попытку.

Я так понимаю, что необходимо в системе windows путь PATH к PHP, Но PHP находится где-то на виртуальной машине Homestead. Как решить проблему?

  • Вопрос задан более трёх лет назад
  • 760 просмотров

Makefile Tools doesn’t work for some reason

I want to use the make command to compile my files. I installed Makefile Tools from the Marketplace, created a Makefile in my directory, but when I use the make command, it throws an error:

    make main.cpp
 + CategoryInfo : ObjectNotFound: (make:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException 

which means that make was not found. I didn’t touch any configuration files. I searched the Net and found nothing about it.

asked Nov 12, 2022 at 13:55
99 1 1 silver badge 7 7 bronze badges

1 Answer 1

It’s helpful to us if the question provides more details about your environment: what is «Makefile Tools»? Which «Marketplace»? What operating system are you using? Also, when formatting command output in your question please use the «Code Sample» format, not the «Blockquote» format, so that SO doesn’t reformat the text.

If you mean the Visual Code extension «Makefile Tools», then that extension only provides an interface to running make and managing Makefiles; it doesn’t provide the actual make program itself.

If you’re using a Windows system you will have to go find a make program and install it on your system before you can run it. There are various options depending on what environment you want to build in.

answered Nov 12, 2022 at 14:42
MadScientist MadScientist
96.3k 9 9 gold badges 114 114 silver badges 141 141 bronze badges

  • visual-studio-code
  • makefile
    The Overflow Blog

ends March 13

Related
Hot Network Questions

Subscribe to RSS

Question feed

To subscribe to this RSS feed, copy and paste this URL into your RSS reader.

Site design / logo © 2024 Stack Exchange Inc; user contributions licensed under CC BY-SA . rev 2024.3.1.5619

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

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