0

我正在关注ASP.NET核心教程https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-mvc-app/adding-model。我是脚手架控制器部分,我试图从我的模型/数据库环境中创建一个控制器。然而,当我按照指示为指导中所描述的,我收到此错误:是否可以使用.NET CLI搭建我的控制器?

enter image description here

我试图恢复的NuGet包并创建一个新的项目,但我仍然得到同样的错误。有没有一种方法可以使用.NET CLI搭建控制器?我以前从未见过一个,所以我不知道如何自己写一个。

谢谢!

编辑:我只是试了@ Prafull8495的回答,并按照他的指示修改了我的项目文件。上述错误不再弹出,但现在我打别的东西:

enter image description here

回答

2

对于基于ASP.NET核心项目的csproj,你需要确保下面引用存在(定位ASP.NET核心的1.0.x的版本)

<ItemGroup>  
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="1.0.0-msbuild3-final" /> 
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.0-msbuild3-final" /> 
</ItemGroup> 

(是面向ASP.NET核心的1.1.x版本的)

<ItemGroup>  
    <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="1.1.0-msbuild3-final" /> 
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.0-msbuild3-final" /> 
</ItemGroup> 

注意的版本项目在这两种情况下,包装Microsoft.VisualStudio.Web.CodeGeneration.Tools保持不变。

还要确保下面的包是不是在项目中引用作为PackageReference

  • Microsoft.VisualStudio.Web.CodeGenerators.Mvc
  • Microsoft.VisualStudio.Web.CodeGeneration.Tools
+0

谢谢你的建议。我修改了我的项目文件,就像你说的那样,我不再遇到那个错误,但现在我得到了一个不同的堆栈跟踪(请参阅更新后的描述)。 –

+0

@JamesKo你能否在你的项目中提供软件包引用?我怀疑在项目中直接引用了一些可能会导致此问题的旧包。 – Prafull8495

0

如果您使用project.json然后按照这种方法。

使用代码生成器包,首先你需要把它列入project.json像这个 -

"dependencies": { 
    "Microsoft.VisualStudio.Web.CodeGeneration.Tools": { 
    "version": "1.0.0-preview2-final", 
    "type": "build" 
    }, 
    "Microsoft.VisualStudio.Web.CodeGenerators.Mvc": { 
    "version": "1.0.0-preview2-final", 
    "type": "build" 
    } 
}, 
"tools": { 
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final", 
    "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final", 
    "Microsoft.VisualStudio.Web.CodeGeneration.Tools": { 
    "version": "1.0.0-preview2-final", 
    "imports": [ 
     "portable-net45+win8" 
    ] 
    } 
} 

现在你可以使用dotnet restore命令恢复软件包。一旦完成,就可以脚手架控制器和视图使用下面的命令(或从Visual Studio如图正式指南) -

dotnet aspnet-codegenerator --project . controller -name HelloController -m Author -dc WebAPIDataContext 

上述命令将产生与在根目录名HelloController中控制器并在Views文件夹下的Hello文件夹中查看CRUD选项。请注意,上面的示例命令将帮助您使用模型和EF创建具有读写操作的Controller。没有模型或dbcontext,它将创建空控制器。您可以在控制器参数之后使用命令行开关--help以获得有关控制器生成器的更多选项。

相关问题