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

.NET 8应用加载Microsoft.AspNetCore.SpaProxy程序集失败求助

解决.NET 8中Microsoft.AspNetCore.SpaProxy程序集加载失败问题

针对你遇到的程序集找不到的问题,试试以下几个可行方案:

1. 修正包版本与.NET版本的兼容性

你当前使用的Microsoft.AspNetCore.SpaProxy 9.0.0-rc.1.24452.1是对应**.NET 9预览版**的包,和你的.NET 8应用存在版本不兼容问题,这大概率是加载失败的核心原因。

把包版本换成适配.NET 8的稳定版,比如8.0.8,修改.csproj中的引用:

<PackageReference Include="Microsoft.AspNetCore.SpaProxy" Version="8.0.8" />

2. 强制程序集复制到输出目录

部分情况下NuGet包的默认配置不会将DLL复制到输出目录,可通过添加PrivateAssets="all"强制复制:

<PackageReference Include="Microsoft.AspNetCore.SpaProxy" Version="8.0.8" PrivateAssets="all" />

修改后执行dotnet clean、dotnet restore、dotnet build,再检查输出目录(如bin/Debug/net8.0)下是否存在Microsoft.AspNetCore.SpaProxy.dll。

3. 手动注册Hosting Startup程序集

放弃环境变量配置,直接在Program.cs中手动注册SpaProxy的Hosting Startup:

var builder = WebApplication.CreateBuilder(args);

// 手动添加SpaProxy到Hosting Startup程序集列表
builder.Host.ConfigureHostingStartupAssemblies(assemblies =>
{
    assemblies.Add("Microsoft.AspNetCore.SpaProxy");
});

// 其他配置代码...

var app = builder.Build();
// ...

4. 手动指定路径加载程序集

如果上述方法无效,可在Program.cs最开头直接从输出目录加载程序集:

using System.Reflection;
using System.Runtime.Loader;
using System.IO;

// 加载SpaProxy程序集
var dllPath = Path.Combine(AppContext.BaseDirectory, "Microsoft.AspNetCore.SpaProxy.dll");
if (File.Exists(dllPath))
{
    AssemblyLoadContext.Default.LoadFromAssemblyPath(dllPath);
}

var builder = WebApplication.CreateBuilder(args);
// ...

5. 清理NuGet缓存并重新构建

执行以下命令彻底清理缓存并重建项目:

dotnet nuget locals all --clear
dotnet restore
dotnet clean
dotnet build --no-incremental

内容的提问来源于stack exchange,提问作者Tom Warner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 17:48:23