VS2019重启后ASP.NET项目报CS0051不一致可访问性错误如何解决?
排查方向如下:
- 清理项目与VS缓存
该问题出现在VS强制退出后,大概率是本地缓存文件损坏导致编译器读取到旧的类定义:- 关闭所有VS窗口,删除项目根目录下的
.vs隐藏文件夹、bin、obj文件夹 - 重启VS后右键解决方案,先执行「清理解决方案」,再执行「重新生成解决方案」,走全量编译流程,不要用增量生成
- 关闭所有VS窗口,删除项目根目录下的
- 检查partial类的所有分部定义
你贴出的AmazonOrdersContext是partial类,所有分部声明的访问修饰符必须完全一致:
全局搜索项目内所有partial class AmazonOrdersContext的定义,检查是否存在某一个分部声明没有加public修饰符,默认internal级别的分部声明会拉低整个类的可访问性。 - 排查同名类冲突
检查项目中是否存在其他命名空间下的同名AmazonOrdersContext类,且该类为非public访问级别:
在ItemsController构造函数的AmazonOrdersContext参数上按F12,确认跳转的目标是否是你贴出的Data命名空间下的public类,如果跳转异常说明引用了错误的类。 - 验证命名空间与引用
可以先把构造函数的参数改为完整限定名测试:
如果编译通过,说明存在命名空间引用冲突,调整public ItemsController(AOWebApp.Data.AmazonOrdersContext context)using指令的优先级即可。 - 检查文件属性与项目配置
右键AmazonOrdersContext对应的代码文件,查看属性页,确认「生成操作」的值为「C# 编译器」,VS强制退出可能会意外修改文件属性导致代码没有被正常编译。
如果你把Context放在独立类库中,检查Web项目对类库的引用是否正常,两个项目的生成架构(x64/Any CPU)、编译配置(Debug/Release)是否一致。
内容的提问来源于stack exchange,提问作者Atavis
相关产品推荐
相关产品推荐

