此代碼適用於ASP.NET Core 2.0,但它可能對您有用。它依賴於Swashbuckle.AspNetCore和Microsoft.AspNetCore.TestHost:
IWebHostBuilder builder = new WebHostBuilder()
.UseStartup<Startup>()
.ConfigureServices(services =>
{
services.AddSwaggerGen(opts =>
{
opts.SwaggerDoc("doc-name", new Info { Title = "Title", Version = "v1" });
});
});
JsonSerializerSettings mvcSerializerSettings;
SwaggerDocument document;
using (var testServer = new TestServer(builder))
{
IOptions<MvcJsonOptions> mvcOptions = testServer.Host.Services.GetService<IOptions<MvcJsonOptions>>();
mvcSerializerSettings = mvcOptions.Value.SerializerSettings;
ISwaggerProvider swaggerProvider = testServer.Host.Services.GetService<ISwaggerProvider>();
document = swaggerProvider.GetSwagger("doc-name");
}
// Reference: Swashbuckle.AspNetCore.Swagger/Application/SwaggerSerializerFactory.cs
var settings = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore,
Formatting = mvcSerializerSettings.Formatting,
ContractResolver = new SwaggerContractResolver(mvcSerializerSettings),
};
string json = JsonConvert.SerializeObject(document, settings);
哪裏Startup
是項目的啓動類。這裏的項目直接引用,但你應該能夠加載程序集並相應地使用它。
我有同樣的問題。你找到解決方案嗎? – fra 2016-11-01 06:14:37
嗨,我最接近的是安裝以下Nuget包並啓用XML文檔生成:https://www.nuget.org/packages/Microsoft.AspNet.WebApi.HelpPage/ – Ramin 2016-11-01 17:55:31
謝謝Ramin。爲了我的需要,我需要實際的swagger文件 – fra 2016-11-01 19:22:35