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

.NET 8项目构建后生成Swagger JSON遇MSB3073错误求助

问题:.NET 8项目构建后生成Swagger JSON文件失败(MSB3073错误)

问题详情

  • 环境:.NET 8,Swashbuckle.AspNetCore 6.5
  • 需求:API构建完成后自动生成OpenAPI规范JSON文件
  • 执行错误:添加PostBuild脚本后,构建时抛出MSB3073 命令“dotnet swagger tofile --output swagger_v1.json bin\Debug\net6.0\TestSwaggerGenWithDotnetSix.dll v1”以代码1退出
  • 已尝试方案:降级Swashbuckle到6.4、参考Stack Overflow相关方案均无效;因Azure构建管道无文件写入权限,无法通过代码中File.Write方式生成文件;移除脚本后项目可正常运行,SwaggerGen及UI配置正常。

已添加的.csproj脚本

<Target Name="PostBuild" AfterTargets="PostBuildEvent">
    <Exec Command="dotnet tool restore"></Exec>
    <Exec Command="dotnet swagger tofile --output swagger_v1.json $(OutputPath)$(AssemblyName).dll v1" />
</Target>

Swagger配置代码

builder.Services.AddSwaggerGen(opt =>
{
    opt.SwaggerDoc("v1", new Microsoft.OpenApi.Models.OpenApiInfo
    {
        Title = "v1",
        Version = "v1"
    });
});

解决方案

1. 修正Target执行时机与路径变量

  • 将AfterTargets="PostBuildEvent"改为AfterTargets="Build",确保在构建完全完成后执行脚本,避免输出文件未生成的问题
  • 确认$(OutputPath)指向.NET 8的输出目录(默认是bin\Debug\net8.0\),避免出现脚本中误写的net6.0路径问题
  • 调整后的脚本:
<Target Name="PostBuildGenerateSwagger" AfterTargets="Build">
    <Exec Command="dotnet tool restore" />
    <Exec Command="dotnet swagger tofile --output swagger_v1.json $(OutputPath)$(AssemblyName).dll v1" />
</Target>

2. 确保Swashbuckle CLI工具安装正确

  • 全局安装工具:执行dotnet tool install -g Swashbuckle.AspNetCore.Cli,保证构建环境能找到该工具
  • 若使用本地工具,在项目根目录执行dotnet tool install Swashbuckle.AspNetCore.Cli,生成.config/dotnet-tools.json文件,确保构建时工具可被识别

3. 排查文档名称与错误详情

  • 确认Swagger配置中的文档名称"v1"与命令中的v1完全一致(区分大小写)
  • 在命令中添加--verbose参数获取详细错误日志,定位具体问题:
dotnet swagger tofile --verbose --output swagger_v1.json $(OutputPath)$(AssemblyName).dll v1

4. Azure构建管道适配

  • 确保管道使用.NET 8 SDK版本执行构建
  • 若使用微软托管代理,在管道步骤中添加dotnet tool install Swashbuckle.AspNetCore.Cli命令,保证工具可用
  • 将输出路径指定到管道允许写入的目录,例如$(Build.ArtifactStagingDirectory)/swagger_v1.json,方便后续发布或归档

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 07:35:21