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

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手动生成文档:

  1. 确保你的.NET Framework项目已安装Swashbuckle.Core NuGet包(版本需与项目中已用的Swashbuckle版本匹配)
  2. 创建一个控制台应用,编写代码加载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);
            }
        }
    }
    
  3. 编译运行该控制台程序,即可在输出目录得到Swagger JSON文件。

注意事项

  • 若项目使用的是Swashbuckle.AspNetCore.Swagger(.NET Framework也可兼容),需调整代码中的命名空间和配置逻辑,匹配AspNetCore版本的Swashbuckle API。
  • 离线生成时,需确保Web项目程序集、依赖项、XML注释文件的路径正确,避免加载失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 14:05:33