尝试使用带有Update 3的Visual Studio 15 Enterprise在ASP.NET Core项目中添加Controller时,出现以下错误:
"The was an error running the selected code generator: No executables found matching command 'dotnet-aspnet-codegenerator'"
答案 0 :(得分:150)
如果您使用csproj(Visual Studio 2017)而不是project.json,则需要将以下内容添加到csproj文件中:
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.1" />
</ItemGroup>
答案 1 :(得分:8)
对于最新版本,在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"
]
}
答案 2 :(得分:6)
比将版本号复制到配置文件中更为可靠的答案是使用NuGet来确保将包添加到项目中。
工具 - &gt; NuGet包管理器 - &gt;管理NuGet包以获得解决方案。
首先,让所有内容保持最新状态。选择“更新”选项卡。选中“全部更新”复选框,然后运行几次。如果某些东西在升级前几次降级,请不要感到惊讶。某些依赖项似乎必须按顺序处理。我花了大约5次升级才能让所有内容都更新。
然后,在浏览标签中,搜索ng-keypress
。安装它。对CodeGeneration.Tools
执行相同操作。当您发现其他错误消息时,您应该能够在NuGet中找到任何缺少的包。
答案 3 :(得分: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
我必须确保重新启动终端。
答案 4 :(得分:3)
将以下内容添加到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"
]
}
答案 5 :(得分:2)
<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>
&#13;
添加后我用nuget包管理器安装了CodeGenerators.Mvc。
我仍然收到一条错误,说它无法在MCD文件夹中找到某个文件,因此我必须将整个bin \ Debug \ netcoreapp1.1文件夹复制并粘贴到bin \ MCD \ Debug \中netcoreapp1.1
我跑了脚手架,它有效!
答案 6 :(得分:2)
我在Visual Studio Mac Community Edition 2017中遇到了同样的问题。在从项目目录运行scaffold
命令之前,请确保该目录包含Program.cs
,Startup.cs
和{ {1}}个文件。如果没有,则将命令.csproj
然后ls-al
运行到项目目录中,该目录将位于当前项目目录中,然后执行cd
命令。许多人忽略了一个明显的错误。
答案 7 :(得分:2)
在dotnet core 2.1.1中,您希望情况已经改变,您可能不需要添加太多内容。很抱歉惹恼您,但是情况还是一样,现在您需要做的就是更新您要使用的工具或软件包的版本。
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.4" />
</ItemGroup>
这对我有用。我希望它适用于其他卡在这里的伊维酮。请注意,键引用是DotNetCliToolReference
而不是PackageReference
答案 8 :(得分:1)
只需添加标记&#39; DotNetCliToolReference&#39; .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
在添加包之后不要忘记构建和恢复解决方案;)
答案 9 :(得分:0)
对于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"
]
}
答案 10 :(得分:0)
在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>
答案 11 :(得分:0)
我刚刚输入Linux:
~/.dotnet/tools/dotnet-aspnet-codegenerator razorpage -m Movie -dc RazorPagesMovieContext -udl -outDir Pages/Movies --referenceScriptLibraries
因此,我不是从'dotnet'(我的当前版本:2.2.300)开始
我不喜欢这种解决方案,但它确实有效。
答案 12 :(得分:0)
对于我来说,安装程序向Path
环境变量添加了错误的路径。
添加的路径指向“程序”下的不存在的文件夹。它需要指向dotnet-aspnet-codegenerator.exe
。
对我来说,正确的路径在我的用户文件夹中:~\.dotnet\tools
您可以通过运行以下命令来检查是否添加了正确的路径:echo $env:Path
如果路径丢失或不正确,则只需将正确的路径添加到Path
系统环境变量中即可。
您也许可以使用PowerShell设置本地变量来进行测试:$env:Path += ";C:\Users\<YOUR_NAME_HERE>\.dotnet\tools"
但是我还没有尝试过。
Environment
,您应该会看到Control panel
的{{1}}选项。Edit system environment variables
按钮。Environment Variables...
下找到并选择System variables
变量,然后单击Path
。Edit
的路径是否存在,如果没有,请单击dotnet-aspnet-codegenerator.exe
并将其添加。