尝试使用带有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'"
如果您使用的是csproj(Visual Studio 2017)而不是project.json,那么您需要将以下内容添加到csproj文件中:
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.1" />
</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>
我刚输入Linux:
~/.dotnet/tools/dotnet-aspnet-codegenerator razorpage -m Movie -dc RazorPagesMovieContext -udl -outDir Pages/Movies --referenceScriptLibraries
所以,我没有从'dotnet'开始(我目前的版本:2.2.300)
我不喜欢这个解决方案,但它有效。
对于最新版本,在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包。
首先,让一切都是最新的。选择“更新”选项卡。选中“全部更新”复选框,然后运行几次。如果某些东西在升级前几次降级,请不要感到惊讶。某些依赖项似乎必须按顺序处理。我花了大约5次升级来获取最新信息。
然后,在浏览选项卡中,搜索CodeGeneration.Tools
。安装它。为CodeGenerators.Mvc
做同样的事情。当您发现其他错误消息时,您应该能够在NuGet中找到任何缺少的包。
如果您使用的是Mac(OS X)或任何受支持的Linux发行版,则必须运行:
dotnet tool install --global dotnet-aspnet-codegenerator --version 2.2.3
另外,在Mac上我加入了我的.zshrc
(或等同于bash)
export PATH=$HOME/.dotnet/tools:$PATH
我必须确保重启终端。
将以下内容添加到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"
]
}
在dotnet核心2.1.1中,您可能希望情况发生变化,您可能不需要添加太多内容。我很抱歉惹恼你,但情况是一样的,你现在需要做的就是更新你想要使用的工具或包的版本。
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.4" />
</ItemGroup>
这对我有用。我希望它适用于被困在这里的其他人。请注意,关键参考是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>
我跑了脚手架,它工作了!
我在Visual Studio Mac Community Edition 2017中遇到了同样的问题。在从项目目录运行scaffold
命令之前,请确保该目录包含Program.cs
,Startup.cs
和.csproj
文件。如果没有,则将命令ls-al
然后cd
运行到项目目录中,该目录将位于当前项目目录中,然后执行scaffold
命令。许多人忽略了一个明显的错
只需在.csproj上添加标签'DotNetCliToolReference'和包代码设计,并在root解决方案上执行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
添加包后不要忘记构建和恢复解决方案;)