7

我已將Swashbuckle包添加到我的ASP Core項目中。獲取ASP核心的XML註釋輸出文件位置

我想配置Swagger使用VS xml註釋自動生成。

的問題是,我無法找到獲得該位置的方式:

  1. PlatformServices.Default.Application.ApplicationBasePath - 點到項目的根路徑
  2. Directory.GetCurrentDirectory() - 同
  3. Path.GetFullPath(".") - 同樣
  4. IHostingEnvironment.WebRootPath - 相同

輸出文件夾配置d在<project>.xproj之前BaseIntermediateOutputPath選項。

但我無法在運行時獲得此位置。

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

壞的解決方案我看到:

  1. 附加配置選項AppSettings.json
  2. 從項目路徑
  3. 相對路徑(如我配置斌輸出路徑)。

但我想與碼頭工人,CI,本地主機使用,所以我不認爲這是使用硬編碼解決方案的最佳解決方案..

回答

2

你可以嘗試以下方法函數來獲取XML文件路徑

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

xml文件與應用程序具有相同的名稱。我目前在我的項目中使用此代碼,它工作正常。

+0

在Docker容器中做這個工作嗎? – deeptowncitizen

+0

我沒有在Docker容器中測試過它,但它在Azure,自託管和IIS(本地主機)中工作。理想情況下,它也應該在Docker中工作,因爲PlatformServices應該公開獨立於Platform的Platform特定信息。如果您進行測試,請告訴我們它是否有效。 –

+0

好東西。不知道有'PlatformServices'存在。 – Andrei