Swagger是否支持.NET4.7.x框架生成Swagger文件?CLI报错求助
解决.NET Framework 4.7.x下使用
dotnet swagger tofile报错“deps.json不存在”的问题 问题原因
dotnet swagger tofile是基于.NET Core工具链开发的命令,它依赖deps.json文件解析程序集依赖关系,但.NET Framework 4.7.x项目编译后不会生成这个Core专属的依赖清单文件,因此执行命令时会触发该错误。
可行解决方案
方案1:运行项目后导出Swagger JSON
.NET Framework项目的Swagger文档通常在项目运行时通过HTTP端点暴露,直接访问导出即可:
- 启动你的.NET Framework 4.7.x Web项目(IIS Express、本地IIS均可)
- 访问Swagger JSON端点,默认路径一般为
http://<项目地址>/swagger/v1/swagger.json(v1为文档版本,需根据项目实际配置调整) - 手动保存页面内容为JSON文件,或用命令行工具下载:
curl http://localhost:xxxx/swagger/v1/swagger.json -o swagger.json
方案2:离线生成Swagger JSON(无需启动项目)
借助Swashbuckle的API手动生成文档:
- 确保你的.NET Framework项目已安装
Swashbuckle.CoreNuGet包(版本需与项目中已用的Swashbuckle版本匹配) - 创建一个控制台应用,编写代码加载Web项目程序集并生成Swagger JSON:
using System.IO; using Swashbuckle.Application; using System.Web.Http; using Newtonsoft.Json; namespace SwaggerOfflineGenerator { class Program { static void Main(string[] args) { // 加载目标Web项目的程序集 var webAssembly = System.Reflection.Assembly.LoadFrom(@"D:\Projects\YourWebProject\bin\Release\YourWebProject.dll"); // 初始化Http配置,与Web项目中Swagger配置保持一致 var config = new HttpConfiguration(); config.EnableSwagger(c => { c.SingleApiVersion("v1", "Your API Name"); // 如果项目配置了XML注释,添加对应路径 c.IncludeXmlComments(@"D:\Projects\YourWebProject\bin\Release\YourWebProject.xml"); }); // 生成并保存Swagger JSON var swaggerProvider = config.GetSwaggerProvider(); var swaggerDoc = swaggerProvider.GetSwagger("v1", null, null); var jsonContent = JsonConvert.SerializeObject(swaggerDoc, Formatting.Indented); File.WriteAllText("swagger.json", jsonContent); } } } - 编译运行该控制台程序,即可在输出目录得到Swagger JSON文件。
注意事项
- 若项目使用的是
Swashbuckle.AspNetCore.Swagger(.NET Framework也可兼容),需调整代码中的命名空间和配置逻辑,匹配AspNetCore版本的Swashbuckle API。 - 离线生成时,需确保Web项目程序集、依赖项、XML注释文件的路径正确,避免加载失败。
内容的提问来源于stack exchange,提问作者iabhee
相关产品推荐
相关产品推荐

