You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 8中EF Core脚手架执行时遇ReflectionTypeLoadException错误

解决EF Core Scaffold-DbContext在.NET 8 Azure Function中的类型加载错误

问题描述

我正在构建Azure Function应用,尝试通过EF Core导入数据库上下文,执行了以下脚手架命令:

Scaffold-DbContext 'Data Source=XXXX;Initial Catalog=XXXX;Persist Security Info=False;User ID = XXXX; Password=XXXX;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout = 30;' 
         Microsoft.EntityFrameworkCore.SqlServer 
         -Context Context -OutputDir ContextModels 
         -NoPluralize -Force

在Package Manager控制台运行该命令时,出现如下错误:

System.Reflection.ReflectionTypeLoadException: Unable to load one or more of the requested types.

Could not load type 'Microsoft.CodeAnalysis.AddImports.AbstractAddImportsService`4' from assembly 'Microsoft.CodeAnalysis.Workspaces, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.

Method 'AddReplacements' in type 'Microsoft.CodeAnalysis.VisualBasic.CaseCorrection.VisualBasicCaseCorrectionService' from assembly 'Microsoft.CodeAnalysis.VisualBasic.Workspaces, Version=3.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' does not have an implementation.

Method 'AddSyntacticClassifications' in type 'Microsoft.CodeAnalysis.VisualBasic.Classification.VisualBasicSyntaxClassificationService' from assembly 'Microsoft.CodeAnalysis.VisualBasic.Workspaces, Version=3.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' does not have an implementation.

Method 'AddLexicalClassifications' in type 'Microsoft.CodeAnalysis.VisualBasic.Classification.VisualBasicEditorClassificationService' from assembly 'Microsoft.CodeAnalysis.VisualBasic.Workspaces, Version=3.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' does not have an implementation.

Could not load type 'Microsoft.CodeAnalysis.CodeGeneration.AbstractImportsAdder' from assembly 'Microsoft.CodeAnalysis.Workspaces, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.

Could not load type 'Microsoft.CodeAnalysis.CodeGeneration.AbstractCodeGenerationService' from assembly 'Microsoft.CodeAnalysis.Workspaces, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.

Derived method 'ConditionalAccessExpression' in type 'Microsoft.CodeAnalysis.VisualBasic.CodeGeneration.VisualBasicSyntaxGenerator' from assembly 'Microsoft.CodeAnalysis.VisualBasic.Workspaces, Version=3.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' cannot reduce access.

错误内容还有更多,但受限于篇幅无法全部贴出。当前使用.NET 8及最新可用包,求解决方法。

解决方案

1. 统一CodeAnalysis相关包版本

错误核心是Microsoft.CodeAnalysis系列包版本不兼容:旧版(3.3.0.0)的VisualBasic.Workspaces与新版(4.5.0.0)的Workspaces冲突。

  • 打开项目的.csproj文件,检查所有Microsoft.CodeAnalysis.*相关的PackageReference,确保版本完全一致(建议使用.NET 8对应的最新稳定版,比如4.8.0或匹配EF Core 8的版本)。
  • 如果存在不同版本的引用,统一修改为相同版本,然后执行Update-Package -Reinstall重新安装包。

2. 清理并重建项目

  • 在Package Manager控制台执行:
    Clean-Solution
    Build-Solution
    
  • 删除项目目录下的bin和obj文件夹,手动清理编译缓存。

3. 使用.NET CLI替代PM控制台

如果PM控制台仍有问题,尝试用.NET CLI执行脚手架命令:

dotnet ef dbcontext scaffold "Data Source=XXXX;Initial Catalog=XXXX;Persist Security Info=False;User ID = XXXX; Password=XXXX;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout = 30;" Microsoft.EntityFrameworkCore.SqlServer --context Context --output-dir ContextModels --no-pluralize --force

注意:确保已安装EF Core CLI工具,若未安装执行dotnet tool install --global dotnet-ef。

4. 检查Azure Function项目的SDK版本

确保Azure Function项目使用的是与.NET 8匹配的Microsoft.NET.Sdk.Functions版本(建议4.1.1或更高),避免SDK与EF Core包版本不兼容。

内容的提问来源于stack exchange,提问作者avsln

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 07:53:11