VS2022添加OpenAPI服务引用构建报MSB3073 openapi2csclient退出码-1
VS2022添加OpenAPI服务引用构建报MSB3073错误修复方案
核心报错原因
- 配置服务引用时填入的是Swagger UI的
index.html静态页面地址,不是OpenAPI规范描述文件(json/yaml格式)本身,NSwag无法从HTML内容解析接口结构,直接执行失败返回-1状态码 - 项目自动引入的NSwag相关组件版本为13.0.5,该版本发布时间远早于VS2022 17.2.x版本,和当前.NET 6、VS2022的MSBuild编译链路存在兼容性问题
- 若你选择AutoRest作为代码生成工具,默认配置可能仍残留NSwag的生成任务,和预期生成逻辑冲突
修复步骤
- 修正OpenAPI源地址:不要使用Swagger UI的页面路径,找到Swagger服务对应的规范JSON地址(通常在Swagger UI页面顶部可直接找到该文件入口),重新配置服务引用;如果是本地存储的规范文件,直接使用后缀为
.json/.yaml的规范文件,不要将HTML页面作为输入源 - 升级兼容的组件版本:打开项目NuGet包管理面板,找到
NSwag.MSBuild、NSwag.ApiDescription.Client两个包,将版本升级到13.15以上的稳定版本,替换存在兼容问题的13.0.5老版本 - 校验项目文件配置:双击打开
.csproj项目文件,找到<OpenApiReference>配置节点,确认Source属性指向正确的OpenAPI规范文件路径;如果你的预期生成工具是AutoRest,将节点下的CodeGenerator属性值修改为AutoRest,避免残留NSwag生成任务。正确的配置参考如下:
<OpenApiReference Include="OpenAPIs\myapi.json" CodeGenerator="AutoRest" Namespace="myapi" ClassName="myapicls" OutputPath="obj\myapiClient.cs" />
- 清理编译缓存:关闭Visual Studio,删除项目目录下的
bin、obj文件夹,重新打开VS后执行「重新生成解决方案」即可正常编译
内容的提问来源于stack exchange,提问作者Kirsten
相关产品推荐
相关产品推荐

