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

MVC Core项目部署后无法加载System.Linq.Dynamic.Core程序集怎么办

MVC Core部署后System.Linq.Dynamic.Core加载异常排查方案

本地运行正常、部署后报程序集找不到,按以下顺序逐一排查即可:

报错信息:Could not load file or assembly 'System.Linq.Dynamic.Core, Version=1.2.6.0'. The system cannot find the file specified.

  • 先检查发布配置的裁剪逻辑
    如果发布时选了独立部署模式,直接把「裁剪未使用的程序集」选项关掉。这个裁剪功能对动态加载的程序集识别准确率很低,非常容易把实际在用的Linq.Dynamic.Core直接裁掉,不会输出到发布目录。如果选的是框架依赖模式,先确认服务器装的.NET运行时版本和本地开发用的SDK大版本完全对齐,不要出现本地用.NET 6开发、服务器只装.NET 3.1运行时的情况。
  • 核对NuGet包的引用属性
    打开项目的.csproj文件,找到System.Linq.Dynamic.Core对应的PackageReference节点,确认节点上没有加<Private>false</Private>、<ExcludeAssets>all</ExcludeAssets>这类配置。这类配置会明确告诉构建过程不要把这个dll复制到输出目录,本地调试可能因为缓存存在能正常跑,发布的时候就会丢文件。正常的引用行只需要保留包名和版本号即可,不需要额外属性。
  • 直接核对发布输出目录的文件
    本地执行Release发布后,先打开publish输出文件夹搜System.Linq.Dynamic.Core.dll:
    • 本地publish目录里就找不到这个dll:不要用VS的可视化发布功能,直接在项目根目录开命令行执行dotnet publish -c Release,命令行发布不会受VS里存的自定义发布配置影响,能排除UI配置错误导致的文件漏输出。
    • 本地publish目录有dll,服务器上找不到:大概率是文件传输漏了,不要零散拖拽dll上传,把整个publish目录打包成zip压缩包,传到服务器后整包解压,避免FTP或者远程桌面文件传输跳过部分文件。
  • 排查版本绑定冲突
    如果服务器部署目录里已经存在该dll还是报错,就在本地项目根目录执行dotnet list package --include-transitive,查看所有传递依赖里有没有引用其他版本的System.Linq.Dynamic.Core。如果存在多版本冲突,要么把所有关联依赖的版本统一到1.2.6.0,要么在csproj里加程序集绑定重定向,指定运行时统一加载1.2.6.0版本。
  • 核对服务器部署配置
    IIS部署场景下,检查对应应用程序池的「启用32位应用程序」选项,和本地发布时选的平台目标(x86/x64/Any CPU)保持一致,位宽不匹配时系统会直接返回找不到文件的错误。同时给部署目录给IIS运行账号分配读取、执行权限,权限不足时很多场景不会直接报权限错误,也会提示找不到指定文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 01:15:32