无法加载程序集求助:已引用程序集仍报加载错误
更新操作时出现报错:Could not load assembly. Ensure it is referenced by the startup project,但相关项目已完成引用,具体情况如下:
- Startup.cs中已配置数据库上下文注入代码:
// Add the SQL db connection services.AddContext<LairageContext>(Configuration.GetConnectionString("SqlConnection"), ServiceLifetime.Transient);
- 依赖项列表中已显示对应引用
- 项目引用配置正确:
<ItemGroup> <ProjectReference Include="..\Marel.LairageScanner.Context.Sql\Marel.LairageScanner.Context.Sql.csproj" /> <ProjectReference Include="..\Marel.Models\Marel.Models.csproj" /> </ItemGroup>
实用排查与解决步骤
清理重建解决方案
右键解决方案 → 选择“清理解决方案”,完成后执行“生成解决方案”。编译缓存异常是这类问题的常见诱因,清理后重新生成可修复多数引用识别问题。确认启动项目设置
检查当前启动项目是否为包含Startup.cs的项目,若不是则右键目标项目 → 设为启动项目。误切换启动项目会导致引用加载路径错误。核对目标框架兼容性
查看被引用项目(Marel.LairageScanner.Context.Sql、Marel.Models)的目标框架版本,确保与启动项目完全一致。比如启动项目用.NET 6,被引用项目用.NET Framework 4.8会直接引发加载失败。检查被引用项目编译状态
单独编译两个被引用项目,确认无编译错误。若被引用项目本身编译失败,即使添加了引用也无法加载其程序集。手动清除bin/obj目录
找到启动项目和被引用项目的bin、obj文件夹并删除,之后重新生成解决方案。这种方式比清理解决方案更彻底,可清除所有残留编译文件。检查“复制本地”属性
右键启动项目中的目标引用 → 属性,确认“复制本地”设置为True。若为False,编译后程序集不会被复制到启动项目输出目录,运行时会找不到文件。排查程序集同名冲突
查看启动项目输出目录,确认是否存在多个版本的同名程序集,或其他项目输出了同名dll,导致加载时出现混淆。
内容的提问来源于stack exchange,提问作者CorrieJanse

