ASP.NET Scaffolding生成Controller失败问题求助
解决ASP.NET Core脚手架生成Controller的两个常见问题
一、解决"需添加Microsoft.VisualStudio.Web.CodeGeneration.Design包"的错误(实际已安装)
- 对齐工具与项目包版本
执行dotnet tool list --global查看dotnet-aspnet-codegenerator的版本,打开.csproj文件确认Microsoft.VisualStudio.Web.CodeGeneration.Design的版本,两者必须完全匹配(比如均为7.0.10)。 - 重新安装工具与包
- 卸载全局工具:
dotnet tool uninstall --global dotnet-aspnet-codegenerator - 安装对应版本的工具:
dotnet tool install --global dotnet-aspnet-codegenerator --version [你的项目包版本] - 在项目目录下重新安装包:
dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design --version [你的项目包版本]
- 卸载全局工具:
- 清理项目缓存
执行dotnet clean,再执行dotnet restore,关闭当前终端后重新打开再运行脚手架命令。
二、解决"要求安装Microsoft.EntityFrameworkCore.SqlServer"的错误(实际使用MySQL)
- 确认MySQL EF Core驱动已正确安装
根据使用的MySQL驱动类型,安装对应包:- Pomelo驱动:
dotnet add package Pomelo.EntityFrameworkCore.MySql --version [与EF Core匹配的版本] - 官方MySQL驱动:
dotnet add package MySql.EntityFrameworkCore --version [匹配版本]
- Pomelo驱动:
- 验证DbContext配置
确保EmployeeContext已配置使用MySQL驱动,示例代码:
或在Program.cs中配置:protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { if (!optionsBuilder.IsConfigured) { optionsBuilder.UseMySql("你的MySQL连接字符串", ServerVersion.AutoDetect("你的MySQL连接字符串")); } }builder.Services.AddDbContext<EmployeeContext>(options => options.UseMySql(builder.Configuration.GetConnectionString("DefaultConnection"), ServerVersion.AutoDetect(builder.Configuration.GetConnectionString("DefaultConnection")))); - 明确指定脚手架的数据库Provider
执行脚手架命令时添加--provider参数,指定MySQL对应的Provider:# Pomelo驱动使用此命令 dotnet aspnet-codegenerator controller -name EmployeeController -m Employee -dc EmployeeContext --relativeFolderPath Controllers --useDefaultLayout --referenceScriptLibraries --provider Pomelo.EntityFrameworkCore.MySql # 官方MySQL驱动使用此命令 dotnet aspnet-codegenerator controller -name EmployeeController -m Employee -dc EmployeeContext --relativeFolderPath Controllers --useDefaultLayout --referenceScriptLibraries --provider MySql.EntityFrameworkCore
内容的提问来源于stack exchange,提问作者Bruno Miguel Groth
相关产品推荐
相关产品推荐

