【问题标题】:Get XML comments output file location for ASP Core获取 ASP Core 的 XML 注释输出文件位置
【发布时间】:2016-04-18 10:10:28
【问题描述】:

我已将Swashbucklepackage 添加到我的 ASP Core 项目中。

我想将 Swagger 配置为使用 VS xml cmets 自动生成。

问题是我找不到获取该位置的方法:

  1. PlatformServices.Default.Application.ApplicationBasePath - 指向项目根路径
  2. Directory.GetCurrentDirectory() - 一样
  3. Path.GetFullPath(".") - 一样
  4. IHostingEnvironment.WebRootPath - 一样

通过BaseIntermediateOutputPath 选项在<project>.xproj 中配置的输出文件夹。

但我无法在运行时获取此位置。

var pathToDoc = "????";
options.OperationFilter(new Swashbuckle.SwaggerGen.XmlComments.ApplyXmlActionComments(pathToDoc));

我看到的不好的解决方案:

  1. 向 AppSettings.json 添加配置选项
  2. 项目路径的相对路径(因为我正在配置 bin 输出路径)。

但我想将它与 Docker、CI、localhost 一起使用,所以我认为这不是使用硬编码解决方案的最佳解决方案..

【问题讨论】:

    标签: asp.net-core asp.net-core-mvc swagger swashbuckle asp.net-core-1.0


    【解决方案1】:

    你可以试试下面的函数来获取XML文件路径

     private string GetXmlCommentsPath()
            {
                var app = PlatformServices.Default.Application;
                return System.IO.Path.Combine(app.ApplicationBasePath, System.IO.Path.ChangeExtension(app.ApplicationName, "xml"));
            }
    

    xml 文件与应用程序同名。我目前在我的项目中使用此代码,它工作正常。

    【讨论】:

    • 我没有在 docker 容器中测试过它,但它确实可以在 Azure、自托管和 IIS (localhost) 中工作。理想情况下,它也应该在 docker 中工作,因为 PlatformServices 应该独立于平台公开平台特定信息。如果您进行测试,请告诉我们它是否有效。
    • 好东西。不知道PlatformServices 存在。
    • 只是要指出,这仅在应用程序的名称中没有句号时才有效,因为 ChangeExtension 将选择最后一部分作为扩展名...
    猜你喜欢
    • 2020-12-30
    • 1970-01-01
    • 2020-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-12
    • 1970-01-01
    相关资源
    最近更新 更多