如何从App Center的OpenAPI生成C# SDK?遇NSwagStudio报错
解决NSwagStudio生成App Center API SDK时的重复属性错误
App Center的OpenAPI规范虽然在网页校验显示有效,但里面可能存在多态Schema的属性重复定义问题——部分父类型和子类型Schema都声明了id、name这类通用属性,NSwag的代码生成逻辑对这种情况的兼容性不足,所以触发了System.InvalidOperationException: The properties 'id', 'name' are defined multiple times异常。
下面是具体的解决步骤:
- 先导出App Center的OpenAPI规范文件(从提供的地址下载YAML或JSON格式)
- 手动编辑规范文件:
- 全局搜索
properties.id和properties.name,定位到重复定义这些属性的Schema - 检查这些Schema是否存在继承关系,如果子Schema重复声明了父Schema已有的属性,直接删除子Schema里的重复定义
- 全局搜索
- 用修改后的规范文件重新在NSwagStudio生成C# SDK
- 要是不想手动改文件,也可以试试调整NSwagStudio的设置:
- 找到「Schema Generator」选项卡,勾选「AllowReferencesWithProperties」
- 或者启用「FlattenInheritanceHierarchy」,把继承结构扁平化,避开重复属性冲突
另外提一句:有些OpenAPI规范为了兼容多客户端会允许这类重复,但代码生成工具的容错性通常没那么高,手动清理重复定义是最稳妥的办法。
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

