NSwag.MSBuild生成API客户端代理的配置优化问询
优化NSwag.MSBuild生成API客户端的MSBuild配置
针对NSwag.MSBuild生成API客户端代理后出现的MSBuild配置冗余、清理失效、编译及文件显示问题,以下是整合后的优化配置方案:
<Project> <!-- 统一生成文件的路径变量,消除引用格式不一致问题 --> <PropertyGroup> <GeneratedApiClientPath>$(MSBuildProjectDirectory)/Generated/ApiClient.g.cs</GeneratedApiClientPath> </PropertyGroup> <!-- 解决FileWrites清理失效:在CoreClean前显式删除生成文件 --> <Target Name="CleanGeneratedApiClient" BeforeTargets="CoreClean"> <Delete Files="$(GeneratedApiClientPath)" Condition="Exists('$(GeneratedApiClientPath)')" /> </Target> <!-- 执行NSwag生成命令,同时处理首次编译问题 --> <Target Name="GenerateApiClient" BeforeTargets="BeforeCompile"> <Exec Command="dotnet nswag openapi2csclient /input:$(OpenApiSpecPath) /output:$(GeneratedApiClientPath) /namespace:MyProject.ApiClients" /> <!-- 目标内添加Compile,确保首次清理构建时生成文件能被编译 --> <ItemGroup> <Compile Include="$(GeneratedApiClientPath)" /> <FileWrites Include="$(GeneratedApiClientPath)" /> </ItemGroup> </Target> <!-- 添加带存在判断的Compile项,让生成文件显示在解决方案资源管理器 --> <ItemGroup> <Compile Include="$(GeneratedApiClientPath)" Condition="Exists('$(GeneratedApiClientPath)')" /> </ItemGroup> </Project>
优化细节说明:
- 统一路径变量:用
GeneratedApiClientPath变量统一所有场景的文件引用,解决@Generated仅目标内生效、Delete不支持通配符的格式矛盾。 - 双重清理机制:显式的
CleanGeneratedApiClient目标搭配FileWrites记录,解决原配置清理失效问题。 - 编译逻辑分层:目标内的
Compile保障首次构建的即时编译,外部带Condition的Compile既让文件显示在资源管理器,又避免文件缺失时的错误提示。 - 消除冗余重复:通过变量复用、逻辑合并,去除重复的文件引用配置,保持配置简洁一致。
内容的提问来源于stack exchange,提问作者b_levitt
相关产品推荐
相关产品推荐

