7

Dodałem pakiet Swashbuckle do mojego projektu ASP Core.Uzyskaj lokalizację komentarzy XML dla pliku wyjściowego dla ASP Core

Chciałbym skonfigurować Swagger do korzystania z generowanych automatycznie komentarzy VS xml.

Problem polega na tym, że nie mogę znaleźć sposób, aby uzyskać tę lokalizację:

  1. PlatformServices.Default.Application.ApplicationBasePath - punkty do ścieżki głównego projektu
  2. Directory.GetCurrentDirectory() - samo
  3. Path.GetFullPath(".") - ten sam
  4. IHostingEnvironment.WebRootPath - ten sam

Konfiguracja folderu wyjściowego d w opcji <project>.xproj według BaseIntermediateOutputPath.

Ale nie mogę uzyskać tej lokalizacji w czasie wykonywania.

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

Bad rozwiązania widzę: opcja konfiguracji

  1. dodatek do AppSettings.json
  2. ścieżka względna od ścieżki projektu (jak ja konfigurowania ścieżkę wyjściową bin).

Ale chciałbym używać tego z Döcker, CI, localhost, więc nie sądzę, że to byłoby najlepsze rozwiązanie, aby korzystać zakodowane rozwiązanie ..

Odpowiedz

2

Można spróbować następujących funkcja uzyskiwania ścieżki pliku XML

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

Plik xml ma taką samą nazwę jak aplikacja. Obecnie używam tego kodu w moim projekcie i działa dobrze.

+0

czy to działa w kontenerze Docker? – deeptowncitizen

+0

Nie przetestowałem tego w kontenerze Docker, ale działa na Azure, self hosted i IIS (localhost). Najlepiej byłoby, gdyby działał również w dockerze, ponieważ PlatformServices ma ujawniać informacje specyficzne dla platformy niezależnie od platformy. Jeśli wykonasz test, daj nam znać, czy to działa. –

+0

Dobre rzeczy. Nie wiedziałem, że "PlatformServices" istnieje. – Andrei

Powiązane problemy