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

发布ASP.NET Core 2.1到Azure时遇"AspNetCore"不存在错误

解决ASP.NET Core 2.1发布Azure时非Portable运行时缺失程序集的问题

我之前也碰到过一模一样的情况!你这问题的核心其实是:当选择特定目标运行时(非Portable)进行框架依赖部署时,发布过程的程序集引用逻辑出现异常,导致Azure环境找不到对应文件——但本地构建没问题,是因为本地运行时的依赖加载机制和Azure上的发布包处理逻辑有差异。

下面是我亲测有效的解决步骤:

1. 检查项目文件(.csproj)的运行时配置

打开你的项目文件,确认以下几点:

  • 确保<RuntimeIdentifiers>节点包含了你选择的目标运行时(比如win-x64),示例配置:
    <PropertyGroup>
      <TargetFramework>netcoreapp2.1</TargetFramework>
      <RuntimeIdentifiers>win-x64;portable</RuntimeIdentifiers>
    </PropertyGroup>
    
  • 检查是否存在<PublishWithAspNetCoreTargetManifest>配置,如果有且值为false,改成true——这个配置会确保发布时包含ASP.NET Core的必要清单文件,避免依赖遗漏。

2. 彻底清理缓存后重新生成发布包

本地编译缓存有时候会干扰发布包的正确性:

  • 在Visual Studio中右键项目,依次选择清理 -> 生成;
  • 手动删除项目目录下的bin和obj文件夹,再重新生成项目、创建发布包。

3. 对齐Azure App Service的运行时设置

登录Azure门户,找到你的App Service:

  • 进入配置 -> 常规设置,确认.NET Core版本设置为2.1;
  • 确保平台位数和你选择的目标运行时匹配(比如选了win-x64就设为64位),位数不匹配会直接导致程序集找不到。

4. 修正发布配置文件(.pubxml)的细节

打开你的发布配置文件,检查核心配置:

  • 确保<RuntimeIdentifier>和你选择的目标运行时完全一致,且<SelfContained>设为false(因为是框架依赖部署),示例:
    <PropertyGroup>
      <RuntimeIdentifier>win-x64</RuntimeIdentifier>
      <SelfContained>false</SelfContained>
    </PropertyGroup>
    
  • 清理掉配置中可能存在的冲突项(比如重复的运行时指定、错误的部署模式设置)。

我当时就是项目文件里的RuntimeIdentifiers没包含我选的win-x64,加上Azure平台不小心设成了32位,改完这两处就完全正常了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:30:52