在 ASP Core 2.0 VS 2017 中搭建控制器时,我得到以下信息:
无法获取 DbContext 的反射类型:
BE.Data.ApplicationDbContext 位于 Microsoft.VisualStudio.Web.CodeGeneration.ActionInvoker.b__6_0() 在 Microsoft.Extensions.CommandLineUtils.CommandLineApplication.Execute(字符串[] 参数)在 Microsoft.VisualStudio.Web.CodeGeneration.ActionInvoker.Execute(字符串[] 参数)在 Microsoft.VisualStudio.Web.CodeGeneration.CodeGenCommand.Execute(字符串[] 参数)
这一切突然发生,运行相同代码的同事没有遇到这个问题,我尝试过干净的构建,删除每个项目中的 bin 和 obj 文件夹,删除 db,但我似乎仍然无法解决这个问题,将不胜感激任何帮助。
型号:
public class SettingType : BaseModel
{
public int SettingTypeId { get; set; }
public string SettingTypeDescription { get; set; }
public string SystemCode { get; set; }
}
我也遇到了这个问题,当我使用新的 C#7 功能(表达式实体成员和 Throw 表达式)时,但是通过将我的代码替换为 C#6 中的等效代码,它不再给我这个错误。尝试在没有任何 C#7 新功能的情况下测试您的项目,也许它应该可以正常工作。我不确定是什么原因,但我认为脚手架所依赖的 Roslyn 包还不支持 C#7 新功能。
作为让脚手架与 C#7 一起使用的解决方法,我认为您可以通过执行以下操作:
Microsoft.CodeAnalysis.CSharp.Workspaces
版本 2.0.0 或更高版本我正在使用 Visual Studio 2019 和 .Net Core 3.1
我刚刚意识到我的代码中的某个地方使用了
unsafe { }
块。我临时评论了不安全的代码,我可以再次搭建脚手架。
当我通过 Scaffold-DbContext 命令生成 EF 模型时出现此错误,并且出现警告。然后首先我纠正 Scaffold-DbContext 的警告,然后脚手架剃刀项目工作正常。
尝试使用scaffold-dbContext 时存在歧义。 我再次尝试搭建脚手架,但 dbcontext 上出现错误。这是对一个术语的模糊使用。 解决错误列表中的这种歧义。解决了问题。
我就遇到过这种情况,只需要在脚手架之后搭建项目即可。 (是的,这是基本的事情,但我忘记了哈哈)
我对此有疑问。我的数据库连接字符串包含特定于语言的符号(拉脱维亚语),我花了两个小时才弄清楚。我通过将项目文件夹和数据库放置在仅包含 ASCII 符号的目录中来修复此问题。
也许对某人有用。
错误的另一个原因...代码文件中不寻常且不可见的字符。来自控制器脚手架的错误之一报告了行号,没有明显的错误,但确实报告了 CS1056 意外字符。
我使用在here找到的正则表达式搜索找到了该字符。它是下面屏幕截图中的黄色方块。删除后,一个控制器的脚手架就完成了,没有错误。
Visual Studio 2022 社区,版本 17.4.4
还要确保您没有安装任何已弃用的软件包,因为这就是导致我出现此问题的原因。我安装了 Microsoft.AspNetCore.Identity,卸载后我可以再次搭建脚手架。