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

Docker中执行dotnet build时未生成Bundles的问题排查

问题原因

Visual Studio在构建项目时会自动触发BuildBundlerMinifier关联的MSBuild目标,而dotnet build/dotnet publish命令默认不会执行该工具的打包任务,这就是Docker命令行构建和Azure CI/CD中bundles文件夹未生成的核心原因。

解决方案

可以通过以下两种方式解决:

方法一:修改项目文件(推荐)

在项目的.csproj文件中添加配置,让BuildBundlerMinifier在构建或发布阶段自动运行:

  1. 开启构建时打包属性
<PropertyGroup>
  <!-- 开启构建时自动执行打包 -->
  <BundleOnBuild>true</BundleOnBuild>
  <!-- 启用压缩功能 -->
  <BundleMinifierEnabled>true</BundleMinifierEnabled>
</PropertyGroup>
  1. 确保bundleconfig.json被复制到输出目录
<ItemGroup>
  <None Update="bundleconfig.json">
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </None>
</ItemGroup>

配置完成后,执行dotnet build或dotnet publish时会自动触发打包操作,生成bundles文件夹。

方法二:在Dockerfile中显式执行打包命令

BuildBundlerMinifier安装后会提供dotnet bundle CLI命令,可在Dockerfile的构建阶段添加该命令,确保打包文件被包含到发布产物中:
修改后的Dockerfile示例:

FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /src
COPY ["BundleTest/BundleTest.csproj", "BundleTest/"]
RUN dotnet restore "BundleTest/BundleTest.csproj"
COPY . .
WORKDIR "/src/BundleTest"
RUN dotnet build "BundleTest.csproj" -c Release -o /app/build
# 显式执行打包命令
RUN dotnet bundle

FROM build AS publish
RUN dotnet publish "BundleTest.csproj" -c Release -o /app/publish /p:UseAppHost=false

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "BundleTest.dll"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 19:07:47