Ни один исполняемый файл не нашел совпадающую команду "dotnet-aspnet-codegenerator"
При попытке добавить контроллер в проект ASP.NET Core с помощью Visual Studio 15 Enterprise с Update 3, я получаю следующую ошибку:
"The was an error running the selected code generator: No executables found matching command 'dotnet-aspnet-codegenerator'"
Ответы
Ответ 1
Если вы используете csproj (Visual Studio 2017) вместо project.json, вам нужно добавить в файл csproj следующее:
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.1" />
</ItemGroup>
Ответ 2
Для последней версии в project.json добавьте следующие зависимости:
"Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
"version": "1.1.0-preview4-final",
"type": "build"
},
"Microsoft.VisualStudio.Web.CodeGenerators.Mvc": {
"type": "build",
"version": "1.1.0-preview4-final"
}
и следующие инструменты:
"Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
"version": "1.1.0-preview4-final",
"imports": [
"portable-net45+win8"
]
}
Ответ 3
Более надежный ответ, чем копирование номеров версий в ваш файл конфигурации, - это использование NuGet для обеспечения того, чтобы пакеты были добавлены в ваш проект.
Инструменты → Диспетчер пакетов NuGet → Управление пакетами NuGet для решения.
Во-первых, обновите все. Перейдите на вкладку "Обновления". Установите флажок "Обновить все" и запустите его несколько раз. Не удивляйтесь, если некоторые вещи понижают первые пару раз, когда вы запускаете обновление. Кажется, что некоторые зависимости обрабатываются последовательно. Мне потребовалось около 5 обновлений, чтобы обновить их.
Затем на вкладке просмотра найдите CodeGeneration.Tools
. Установите его. Сделайте то же самое для CodeGenerators.Mvc
. Когда вы найдете дополнительные сообщения об ошибках, вы сможете найти недостающие пакеты в NuGet.
Ответ 4
Если вы используете Mac (OS X) или любой другой поддерживаемый дистрибутив Linux, вам нужно запустить:
dotnet tool install --global dotnet-aspnet-codegenerator --version 2.2.3
Кроме того, на Mac я добавил в свой .zshrc
(или эквивалент bash)
export PATH=$HOME/.dotnet/tools:$PATH
И я должен был обязательно перезапустить Терминал.
Ответ 5
Добавьте в свой проект project.json следующее:
В зависимостях:
"Microsoft.VisualStudio.Web.CodeGenerators.Mvc": {
"version": "1.0.0-preview2-final",
"type": "build"
}
В инструментах:
"Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
"version": "1.0.0-preview2-final",
"imports": [
"portable-net45+win8"
]
}
- Номер версии может изменяться в зависимости от версии .NET Core, которую вы используете в своем проекте.
- Вы можете получить еще одну ошибку о том, что Microsoft.DotNet.InternalAbstractions отсутствует, и в этом случае вам нужно будет получить от NuGet
- Убедитесь, что версия Microsoft.VisualStudio.Web.CodeGeneration.Tools в зависимостях соответствует версии Microsoft.VisualStudio.Web.CodeGeneration.Tools в инструментах
Ответ 6
- Мне пришлось добавить в файл CSProj следующее:
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0-msbuild3-final" />
<DotNetCliToolReference Include="Microsoft.Extensions.SecretManager.Tools" Version="1.0.0-msbuild3-final" />
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.0-msbuild3-final" />
</ItemGroup>
Ответ 7
Я столкнулся с теми же проблемами в Visual Studio Mac Community Edition 2017. Перед запуском scaffold
команды из каталога проекта, убедитесь, что каталог имеет Program.cs
, Startup.cs
и .csproj
файлов. если нет, то выполните команду ls-al
и затем cd
в каталог проекта, который будет находиться в вашем текущем каталоге проекта, а затем выполните команду scaffold
. Очевидную ошибку многие упускают из виду.
Ответ 8
В DotNet Core 2.1.1 вы ожидаете, что ситуация изменилась, и вам не нужно много добавлять. Извините, что раздражаю вас, но ситуация такая же, и все, что вам нужно сделать сейчас, это обновить свою версию инструмента или пакета, который вы хотите использовать.
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.4" />
</ItemGroup>
Это сработало для меня. Я надеюсь, что это работает для всех, кто застрянет здесь. Обратите внимание, что ключевой ссылкой является DotNetCliToolReference
не PackageReference
Ответ 9
Просто добавьте тег 'DotNetCliToolReference' и дизайн кода пакета в .csproj и выполните команду code-generate для корневого решения. Это сработало для меня.
.csproj <ItemGroup> <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.3"/> </ItemGroup>
<ItemGroup>... <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.0.3"/> </ItemGroup>
Командный PS C:\Users\miche\projetos\asp_net_core\crud> dotnet aspnet-codegenerator controller -name ProdutosController -m Produto -dc AppDataContext --relativeFolderPath Controllers --useDefaultLayout --referenceScriptLibraries
Не забудьте собрать и восстановить решение после добавления пакета;)
Ответ 10
Для VS 2015, в файле project.json -
в зависимостях add -
"Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
"version": "1.0.0-preview2-final",
"imports": [
"portable-net45+win8"
]
},
"Microsoft.VisualStudio.Web.CodeGenerators.Mvc": "1.0.0-preview2-final"
то под инструментами add-
"Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
"version": "1.0.0-preview2-final",
"imports": [
"portable-net45+win8"
]
}
Ответ 11
В Visual Studio Code измени свой yourproject.csproj
<pre>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" />
<PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.1.2" PrivateAssets="All" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="2.1.4" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.1.6" PrivateAssets="All" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.4" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" version= "2.1.0-preview1-final" />
<PackageReference Include="Microsoft.Extensions.SecretManager.Tools" version= "2.0.2" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.4" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.2" />
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" version="2.1.0-preview1-final" />
</ItemGroup>'enter code here'
</pre>
Ответ 12
Я просто набрал в Linux:
~/.dotnet/tools/dotnet-aspnet-codegenerator razorpage -m Movie -dc RazorPagesMovieContext -udl -outDir Pages/Movies --referenceScriptLibraries
Итак, я не начал с "dotnet" (моя текущая версия: 2.2.300)
Мне не нравится это решение, но оно сработало.