生产环境遇System.Linq.Dynamic.Core文件未找到异常求助
解决System.Linq.Dynamic.Core生产环境文件未找到异常
异常信息
2025-03-26 10:35:25.3977|Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware|ERR|An unhandled exception has occurred while executing the request. System.IO.FileNotFoundException: Could not load file or assembly 'System.Linq.Dynamic.Core, Version=1.6.0.2, Culture=neutral, PublicKeyToken=0f07ec44de6ac832'. The system cannot find the file specified. File name: 'System.Linq.Dynamic.Core, Version=1.6.0.2, Culture=neutral, PublicKeyToken=0f07ec44de6ac832'
场景说明
已通过NuGet安装该包,本地运行正常,生产环境中DLL文件存在于可执行目录,且均为64位系统,排除格式不兼容问题。
解决步骤
- 核对程序集版本:右键生产环境中的
System.Linq.Dynamic.Core.dll,查看属性里的版本号,确认是否与异常中要求的1.6.0.2完全一致,避免版本不匹配或部署时同步失败。 - 添加程序集绑定重定向:若项目存在多版本冲突,在应用配置文件(web.config或对应环境的配置文件)中添加绑定重定向,强制应用使用已部署的版本:
<runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Linq.Dynamic.Core" publicKeyToken="0f07ec44de6ac832" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-1.6.0.2" newVersion="1.6.0.2" /> </dependentAssembly> </assemblyBinding> </runtime>
- 确认文件复制配置:在Visual Studio中,找到项目对
System.Linq.Dynamic.Core的引用,将其复制到输出目录属性设置为「始终复制」或「如果较新则复制」,确保部署时DLL被正确同步到生产环境。 - 匹配.NET运行时版本:检查生产环境的.NET运行时版本是否与本地开发环境完全一致,运行时版本差异可能导致程序集加载失败。
- 清理重部署:删除生产环境下的所有应用文件,重新从发布包部署,清除旧版本残留或缓存文件。
- 检查文件权限:确认运行应用的用户(如应用程序池标识)对
System.Linq.Dynamic.Core.dll拥有读取权限,权限不足会触发“文件未找到”的错误提示。
内容的提问来源于stack exchange,提问作者David Stania
相关产品推荐
相关产品推荐

