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

加载含Microsoft.NET.Sdk.Web的ASP.NET Core程序集失败,求解决方案

解决方案

原因分析

.NET Core 3.0及更高版本中,Microsoft.AspNetCore.App是共享框架程序集,这类组件不会以独立dll的形式出现在解决方案目录或传统系统目录中,而是封装在.NET Core运行时的专属共享目录里,由CLR负责统一加载管理。你找不到dll是正常的,因为它们不是独立分发的文件。

具体解决步骤

1. 定位AspNetCore运行时的共享目录

首先找到对应版本的AspNetCore运行时安装路径:

  • 默认路径格式:C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\<目标框架版本号>
  • 可以通过执行dotnet --list-runtimes命令,查看已安装的所有AspNetCore运行时版本及对应的路径,比如输出可能包含:
    Microsoft.AspNetCore.App 6.0.25 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
    

2. 在AssemblyResolve事件中手动加载(应急方案)

如果你的工具项目无法直接引用AspNetCore框架,可以在AssemblyResolve事件中拼接路径加载缺失的dll:

AppDomain.CurrentDomain.AssemblyResolve += (sender, resolveArgs) =>
{
    var targetAssembly = new AssemblyName(resolveArgs.Name);
    // 替换为你查到的对应版本路径
    var runtimeDir = @"C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\6.0.25";
    var dllPath = Path.Combine(runtimeDir, $"{targetAssembly.Name}.dll");

    return File.Exists(dllPath) ? Assembly.LoadFrom(dllPath) : null;
};

3. 利用框架引用自动解析(推荐方案)

这是更规范的做法,让CLR自动处理依赖解析:

  • 如果你的工具项目是Web SDK项目(Microsoft.NET.Sdk.Web),会自动隐式引用Microsoft.AspNetCore.App,无需额外配置。
  • 如果你的工具是控制台/类库项目(Microsoft.NET.Sdk),在项目的.csproj文件中添加以下框架引用:
    <ItemGroup>
        <FrameworkReference Include="Microsoft.AspNetCore.App" />
    </ItemGroup>
    
    添加后重新编译工具,加载Web程序集时CLR会自动从共享框架目录中查找并加载所需依赖,无需手动处理AssemblyResolve事件。

4. 版本兼容性注意事项

确保工具使用的AspNetCore运行时版本,与待加载的Web程序集的目标框架版本兼容(优先使用完全匹配的版本),否则可能出现版本不兼容的加载错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 04:53:26