You need to enable JavaScript to run this app. .NET Core 3.1控制台应用程序集版本不匹配报FileNotFoundException如何解决
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core 3.1控制台应用程序集版本不匹配报FileNotFoundException如何解决

.NET Core 3.1控制台应用程序集版本不匹配导致FileNotFoundException处理说明

问题场景

原.NET Framework 4.8迁移至.NET Core 3.1的控制台应用,运行时抛出System.IO.FileNotFoundException崩溃。报错提示无法加载Microsoft.Extensions.FileProviders.Physical 3.1.0.0版本程序集,经核验:

  • 控制台exe输出目录下存在同名DLL,但实际程序集版本为3.1.6.0
  • 整个解决方案输出目录共包含1200+个DLL
  • 同目录下的ASP.NET Core应用加载全部DLL时,未触发同类版本不匹配问题

已观察到的排查结果

  • 全量1200+个项目的.csproj文件中,未直接检索到Physical、Mvc.Abstractions相关字符串
  • 全目录400+个.deps.json文件中,全部记录引用Microsoft.Extensions.FileProviders.Physical 3.1.0.0版本
  • 控制台应用自身的.deps.json文件中,未提及Microsoft.Extensions.FileProviders.Physical
  • 手动将3.1.0.0版本的目标DLL放入exe运行目录后,仍抛出相同的找不到3.1.0.0版本的异常
  • 参考程序集解析方案编写如下自定义加载逻辑:
AssemblyLoadContext.Default.Resolving += (context, name) =>
{
  var dllPath = System.IO.Path.Combine(Environment.CurrentDirectory, name.Name + ".dll");

  if (File.Exists(dllPath))
  {
    return AssemblyLoadContext.Default.LoadFromAssemblyPath(dllPath);
  }

  return null;
};

该逻辑可让250+个存在版本不匹配的程序集正常加载,但后续会触发Microsoft.AspNetCore.Mvc.Abstractions 3.1.0.0版本找不到的异常——该DLL本身不在exe周边输出目录中

  • 诊断级MSBuild输出显示:
    1. Microsoft.Extensions.FileProviders.Physical 3.1.0.0版本,被项目内自有程序集A、B、C依赖,但这三个程序集的.csproj文件未声明对该DLL的引用
    2. Microsoft.AspNetCore.Mvc.Abstractions 3.1.0.0版本,被上述自有程序集B依赖,且B的.csproj文件同样未声明对该DLL的引用

已验证无效的尝试

  • 沿用.NET Framework绑定重定向方案:.NET Core无传统app.config形式的绑定重定向机制,尝试在控制台项目.csproj中添加如下配置,未对.deps.json生成结果、运行时异常产生任何影响:
<PropertyGroup>
    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
    <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>
  • 手动替换指定版本DLL到输出目录:未解决运行时加载失败问题
  • 自定义程序集解析逻辑仅从当前运行目录扫描文件:无法解决不在输出目录的间接依赖加载问题

核心待解决问题

  • 如何让.NET Core 3.1运行时自动加载已存在的3.1.6.0版本程序集,替代运行时请求的3.1.0.0版本
  • 同目录下的ASP.NET Core应用是通过何种机制规避同类版本不匹配问题的

内容的提问来源于stack exchange,提问作者O. R. Mapper

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 10:36:04