При попытке добавить Контроллер на предприятии Visual Studio 15 использования проекта Ядра ASP.NET с Обновлением 3, я получаю ошибку ниже:
"The was an error running the selected code generator: No executables found matching command 'dotnet-aspnet-codegenerator'"
Если Вы используете csproj (Visual Studio 2017) вместо project.json, то необходимо добавить следующее к csproj файлу:
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.1" />
</ItemGroup>
Для последней версии, в 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"
]
}
Более устойчивый ответ, чем копирование номеров версий в Ваш конфигурационный файл должен использовать NuGet, чтобы гарантировать, что пакеты добавляются к Вашему проекту.
Инструменты-> Диспетчер пакетов NuGet-> Управляют Пакетами NuGet для Решения.
Первый, получите все актуальное. Выберите вкладку Updates. Установите флажок для Обновления Все и выполните это несколько раз. Не удивляйтесь, понижает ли некоторый материал эти первые два раза, Вы выполняете обновление. Некоторые зависимости, кажется, должны быть обработаны последовательно. Мне потребовались приблизительно 5 обновлений для получения всего актуального.
Затем на вкладке обзора, ищут CodeGeneration.Tools
. Установите его. Сделайте то же для CodeGenerators.Mvc
. Поскольку Вы находите дополнительные сообщения об ошибках, необходимо смочь найти любые недостающие пакеты в NuGet.
При использовании Mac (OS X) или какое-либо поддерживаемое распределение Linux необходимо работать:
dotnet tool install --global dotnet-aspnet-codegenerator --version 2.2.3
Кроме того, на Mac я добавил к моему .zshrc
(или эквивалентный удар)
export PATH=$HOME/.dotnet/tools:$PATH
, И я должен был удостовериться, что перезапустил Терминал.
Добавьте следующее к своему project.json:
Под зависимостями:
"Microsoft.VisualStudio.Web.CodeGenerators.Mvc": {
"version": "1.0.0-preview2-final",
"type": "build"
}
инструменты Under:
"Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
"version": "1.0.0-preview2-final",
"imports": [
"portable-net45+win8"
]
}
В dotnet базовых 2.1.1 Вы ожидали бы, что ситуация изменилась, и Вы, возможно, не должны добавлять много. Я сожалею, что раздражал Вас, но ситуация - то же и все, что необходимо сделать, теперь обновление версия инструмента или пакета, который Вы хотите использовать.
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.4" />
</ItemGroup>
Это работало на меня. Я надеюсь, что это еще работает на eveyone, который застревает здесь. Обратите внимание, что ключевая ссылка DotNetCliToolReference
не PackageReference
<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>
После добавления, что я установил CodeGenerators. Mvc с диспетчером пакетов самородка.
я все еще получал ошибку при высказывании, что она не может найти некоторый файл в папке MCD, таким образом, я должен был скопировать и вставить всю bin\Debug\netcoreapp1.1 папку в bin\MCD\Debug\netcoreapp1.1
, я выполнил леса, и она работала!
Я встретился с той же проблемой в Visual Studio Выпуск 2017 Сообщества Mac. До выполнения эти scaffold
команда от каталога проекта, удостоверьтесь, что каталог имеет Program.cs
, Startup.cs
и .csproj
файлы. в противном случае затем выполните команду ls-al
и затем cd
в каталог проекта, который был бы в Вашем текущем каталоге проекта и затем выполнился бы эти scaffold
команда. Очевидная ошибка многие пропускают.
Просто добавьте, отмечают 'DotNetCliToolReference' и дизайн кода пакета на .csproj, и выполняют код - генерируют команду на корневом решении . Это работало мне.
команда .csproj PS C:\Users\miche\projetos\asp_net_core\crud> dotnet aspnet-codegenerator controller -name ProdutosController -m Produto -dc AppDataContext --relativeFolderPath Controllers --useDefaultLayout --referenceScriptLibraries
<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>
Для VS 2015, в project.json файле -
под зависимостями добавляют -
"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"
затем под инструментами, добавляют -
"Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
"version": "1.0.0-preview2-final",
"imports": [
"portable-net45+win8"
]
}
В Visual Studio Код изменяют Ваш 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>