.NET 8 API项目引用.NET Framework 4.5类库加载System.Data.Linq失败求助
出现这个错误的核心原因是:.NET 8(属于.NET Core/.NET 5+跨平台体系)默认不包含.NET Framework专属的System.Data.Linq程序集,而你引用的.NET Framework 4.5类库依赖该组件。以下是具体解决步骤:
启用Windows目标兼容性
在你的.NET 8 API项目的.csproj文件中添加EnableWindowsTargeting配置,允许项目访问Windows平台下的.NET Framework专属程序集:<PropertyGroup> <TargetFramework>net8.0</TargetFramework> <EnableWindowsTargeting>true</EnableWindowsTargeting> <UseWindowsForms>false</UseWindowsForms> <UseWpf>false</UseWpf> </PropertyGroup>注意:此配置仅支持Windows运行环境,如果你的API需要跨平台部署,可能需要考虑将遗留类库迁移到.NET Standard/.NET 5+。
手动安装System.Data.Linq NuGet包
.NET Framework中System.Data.Linq是框架自带组件,但.NET 8需要通过NuGet手动引入。执行以下命令安装:Install-Package System.Data.Linq或者直接在NuGet包管理器中搜索
System.Data.Linq并安装对应版本(推荐匹配.NET Framework 4.5兼容的版本)。检查程序集绑定配置(若存在版本冲突)
如果安装后仍出现版本不匹配的错误,可在项目的runtimeconfig.template.json中添加绑定配置,强制指定加载的程序集版本:{ "configProperties": { "System.Data.Linq:AssemblyVersion": "4.0.0.0" } }确认运行环境
若上述配置仍无效,请确保你的.NET 8 API运行在Windows系统上——跨平台的.NET(Linux/macOS)无法完全兼容.NET Framework的专属API,这种情况下只能考虑重构遗留类库或限制部署环境为Windows。
内容的提问来源于stack exchange,提问作者Daniel Fridman

