.NET Core Web Application 中,从Nuget添加 Web.CodeGeneration.Tools 报错的问题
用VS2017新建了一个空的.NET Core Web Application,先从Nuget添加了Microsoft.AspNetCore.Mvc,在Startup.cs类中也添加了MVC注入services.AddMvc()。如下图:
然后,在项目中添加了一个名为Controllers的文件夹。接下来,添加Controller类的时候出错了。先让选择添加的类型,我选择了最小依赖。如下图:
之后,在Controllers文件夹上右键添加Controller的时候,没有成功。报如下错误:
---------------------------
错误
运行所选代码生成器时出错:
“No executable found matching command "dotnet-aspnet-codegenerator"”
---------------------------
翻开添加Microsoft.AspNetCore.Mvc时,系统自动生成的一个名为ScaffoldingReadMe.txt的文本文件可以看到
ASP.NET MVC core dependencies have been added to the project.
However you may still need to do make changes to your project.
1. Add Scaffolding CLI tool to the project:
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.1" />
</ItemGroup>
所以怀疑是因为没有操作这个第一步才会导致的错误。
可是,在Nuget上搜索 Web.CodeGeneration.Tools 点击安装,又报错,安装不上:
包“Microsoft.VisualStudio.Web.CodeGeneration.Tools 1.0.1”具有一个包类型“DotnetCliTool”,项目“CoreExplorer.WebApplication1”不支持该类型。
解决方法:
在项目名称上右键,选择“编辑*****.csproj”,然后将
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.1" />
</ItemGroup>
复制进去,保存。
这时候再在Controllers文件夹上右键添加Controller就没问题了。
但是我这儿又出现了另外一个问题:
“Controller是命名空间,但此处被当做类型来使用”。Controller类为什么没有引进来呢,求大神指教!
--------- 补充 -------
上面命名空间的这个错误太低级了!是因为我建Controllers文件夹的时候,不小心少输入了一个s,文件夹名成Controller了。虽然后来重命名了,但是命名空间没有变。如上面截图中显示的:namespace CoreExplorer.WebApplicationEmpty.Controller。 把其中的Controller改成Controllers即可。所以要避免类名和命名空间名重复!