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

执行dotnet swagger tofile时项目启动,如何不运行项目生成Swagger文档?

解决无需运行服务生成Swagger文档的问题

问题根源

你当前的配置未指定命令执行时机,导致构建流程误触发了服务启动逻辑;同时裸写的<Exec>标签可能存在dll路径定位偏差,使得文档生成命令未正确执行。

解决方案

方案1:在csproj中绑定正确的构建目标

把Swagger生成命令包裹在AfterBuild目标里,确保编译完成后立刻执行文档生成逻辑,不会触发服务启动:

<Target Name="GenerateSwaggerDocumentation" AfterTargets="Build">
  <!-- 还原Swagger CLI工具 -->
  <Exec Command="dotnet tool restore" />
  <!-- 从编译输出的dll生成Swagger文档,用$(OutputPath)变量自动定位正确路径 -->
  <Exec Command="dotnet swagger tofile --output myoutputfile.xml $(OutputPath)\myawesomecode.dll v1" />
</Target>

替换你原来的裸<Exec>代码后,执行dotnet build只会完成编译+生成文档,不会启动服务。

方案2:先发布再生成文档(彻底脱离运行依赖)

如果不想修改csproj,也可以先发布项目,再从发布目录的dll生成文档,完全不需要启动服务:

# 先以Release模式发布项目
dotnet publish -c Release
# 从发布后的dll生成Swagger文档,将netX.X替换为你的实际.NET版本
dotnet swagger tofile --output myoutputfile.xml ./bin/Release/netX.X/publish/myawesomecode.dll v1

额外注意点

  • 确认myawesomecode.dll是你的Web项目输出dll,使用$(OutputPath)变量可避免硬编码路径出错。
  • 执行构建时务必用dotnet build命令,不要用dotnet run(后者本身就会启动服务)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 15:17:34