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

如何配置MSBuild目标 实现API项目构建时触发NSwag客户端生成

NSwag客户端代码增量生成MSBuild配置方案

当前配置无法按预期触发的核心原因是:自定义NSwag生成任务未声明增量构建依赖的输入、输出项,MSBuild无法判断任务是否需要重新执行,仅能在客户端项目本身文件变更触发重编译时连带执行任务,无法感知API项目的内容变更。
以下配置可同时满足「客户端项目编译前完成代码生成」「仅API项目内容变更时触发重新生成」两个要求:

<ItemGroup>
  <!-- 保留原有不引用API输出程序集的项目引用,配置构建依赖确保API项目优先构建 -->
  <ProjectReference Include="..\Backend\Presentation\Web.csproj" 
                    ReferenceOutputAssembly="false"
                    SkipGetTargetFrameworkProperties="false"
                    PrivateAssets="all" />
</ItemGroup>

<PropertyGroup>
  <!-- NSwag配置文件路径 -->
  <NSwagConfigPath>client.nswag.json</NSwagConfigPath>
  <!-- 生成的客户端代码输出路径,需和nswag配置中指定的output路径完全一致 -->
  <NSwagOutputPath>Clients/ApiClient.g.cs</NSwagOutputPath>
</PropertyGroup>

<ItemGroup>
  <!-- 将API项目所有影响API接口定义的文件列为生成任务的输入项 -->
  <NSwagInput Include="..\Backend\Presentation\Web.csproj" />
  <NSwagInput Include="..\Backend\Presentation\**/*.cs" />
  <NSwagInput Include="..\Backend\Presentation\appsettings*.json" />
  <NSwagInput Include="$(NSwagConfigPath)" />
</ItemGroup>

<Target Name="GenerateNSwagClient"
        BeforeTargets="BeforeCompile"
        Inputs="@(NSwagInput)"
        Outputs="$(NSwagOutputPath)"
        Condition="'$(CI)' != 'true'">
  <!-- 执行生成前先确保API项目为最新构建状态 -->
  <MSBuild Projects="..\Backend\Presentation\Web.csproj"
           Targets="Build"
           Properties="Configuration=$(Configuration)" />
  <Exec Command="$(NSwagExe_Net60) run $(NSwagConfigPath) /variables:Configuration=$(Configuration) /variables:OutputType=Exe" />
</Target>

配置注意事项

  • Inputs和Outputs是MSBuild增量构建的核心判断依据:只要Inputs列出的任意文件修改时间晚于Outputs指向的生成文件,MSBuild就会自动执行代码生成任务,无变更时直接跳过,不会额外增加编译耗时
  • 若你使用的NSwag生成模式是从启动后的API运行实例拉取OpenAPI文档,而非读取编译后程序集生成代码,可将Target内构建API项目的MSBuild节点替换为本地启动API实例的命令,输入输出的增量判断逻辑无需修改
  • 请将配置中NSwagOutputPath的取值替换为自身项目中NSwag实际输出客户端代码的文件路径,否则增量构建的时间戳判断会失效
  • 如果你的API项目还依赖其他联级项目的代码变更,可以在NSwagInput项中补充对应联级项目的文件路径,即可把这些项目的变更也纳入生成触发条件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 21:24:21