在 ASP.NET MVC Core 中,Microsoft.AspNetCore.Razor.Design 和 Microsoft.VisualStudio.Web.CodeGeneration.Design 包有什么作用?

gb2*_*b2d 5 asp.net-core

它们只在设计时需要吗?可以在不引起任何构建问题的情况下删除它们吗?(目标框架 netcoreapp2.1)。

itm*_*nus 6

的包Microsoft.AspNetCore.Razor.Design 包含对 Razor 的 MSBuild 支持。如果您正在开发 asp.net 核心应用程序,则无需Microsoft.AspNetCore.Razor.Design手动添加包引用(并且您也不应该手动删除它们)。因为它是由Microsoft.AspNetCore.App元包引用的,这意味着如果您依赖于Microsoft.AspNetCore.App,您将自动引用该包

的包Microsoft.VisualStudio.Web.CodeGeneration.Design是一个完全不同的。顾名思义,它仅用于生成代码。例如,您想开发一个没有Visual Studio以下内容的项目:

  1. 您使用以下命令创建一个新项目 dotnet new mvc
  2. 然后你创建一个名为App.Models.MyModelmannally的新模型
  3. 通常,我们将用于Visual Studio生成控制器、视图、DbContext 等。但是如果我们没有Visual Studio呢?

如果我们Microsoft.VisualStudio.Web.CodeGeneration.Design*.csproj文件中有引用,我们可以使用以下命令创建 CRUD 脚手架

dotnet aspnet-codegenerator controller -m $model -dc $dcClass -name $controllerName -namespace $controllerNamespace -outDir Controllers --useDefaultLayout
Run Code Online (Sandbox Code Playgroud)

还有一些其他的子命令,例如:

dotnet aspnet-codegenerator identity -dc $dcClass
Run Code Online (Sandbox Code Playgroud)

但是,此包仅用于脚手架。生成代码后,您可以在发布前随意删除此包。

作为旁注,要使用该dotnet aspnet-codegenerator命令,我们应该首先安装该工具:

dotnet tool install --global dotnet-aspnet-codegenerator
Run Code Online (Sandbox Code Playgroud)