using NCC; using NCC.Dependency; using NCC.SpecificationDocument; using System; using System.IO; namespace Microsoft.Extensions.DependencyInjection { /// /// 规范化接口服务拓展类 /// [SuppressSniffer] public static class SpecificationDocumentServiceCollectionExtensions { /// /// 添加规范化文档服务 /// /// Mvc 构建器 /// 自定义配置 /// 服务集合 public static IMvcBuilder AddSpecificationDocuments(this IMvcBuilder mvcBuilder, Action configure = default) { mvcBuilder.Services.AddSpecificationDocuments(configure); return mvcBuilder; } /// /// 添加规范化文档服务 /// /// 服务集合 /// 自定义配置 /// 服务集合 public static IServiceCollection AddSpecificationDocuments(this IServiceCollection services, Action configure = default) { // 判断是否启用规范化文档 if (App.Settings.InjectSpecificationDocument != true) return services; // 添加配置 services.AddConfigurableOptions(); // 载入服务配置选项 var configureOptions = new SpecificationDocumentServiceOptions(); configure?.Invoke(configureOptions); // 添加Swagger生成器服务 services.AddSwaggerGen(options => { SpecificationDocumentBuilder.BuildGen(options, configureOptions?.SwaggerGenConfigure); //string XmlAssmblyName = App.Configuration["Appsettings:XmlAssmblyName"] ?? "";// "NCC.Code.xml,NCC.Food.xml,NCC.System.xml,NCC.OAuth.xml,NCC.Extend.xml,NCC.Food.Entitys.xml"; //var xmlList = XmlAssmblyName.Split(','); //foreach (var xml in xmlList) //{ // var xmlPath = Path.Combine(AppContext.BaseDirectory, xml); // options.IncludeXmlComments(xmlPath); //} } ); // 添加 MiniProfiler 服务 AddMiniProfiler(services); return services; } /// /// 添加 MiniProfiler 配置 /// /// private static void AddMiniProfiler(IServiceCollection services) { // 注册MiniProfiler 组件 if (App.Settings.InjectMiniProfiler != true) return; services.AddMiniProfiler(options => { options.RouteBasePath = "/index-mini-profiler"; options.EnableMvcFilterProfiling = false; options.EnableMvcViewProfiling = false; }); } } }