7

私はASPコアプロジェクトにSwashbuckleパッケージを追加しました。ASPコアのXMLコメント出力ファイルの場所を取得

VSxmlのコメントで自動生成されるようにSwaggerを構成したいと思います。同じ

  • Path.GetFullPath(".") - - プロジェクトのルートパス
  • Directory.GetCurrentDirectory()へのポイント - 同じ
    1. PlatformServices.Default.Application.ApplicationBasePath

      問題は、私はその場所を取得する方法を見つけることができないということです

    2. IHostingEnvironment.WebRootPath - 同じ

    出力フォルダ構成d <project>.xprojBaseIntermediateOutputPathオプション。

    しかし、この場所を実行時に取得することはできません。私が見

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

    悪いソリューション:

    1. AppSettings.json
    2. プロジェクトパス(私はビン出力パスを設定していたように)からの相対パスに設定オプションを追加します。

    しかし、私はドッカー、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

    私はそれをドッカーコンテナでテストしていませんが、Azure、self hosted&IIS(localhost)で動作します。理想的には、PlatformServicesはプラットフォームとは独立したプラットフォーム固有の情報を公開することになっているので、それはドッカーでも機能するはずです。テストをする場合は、動作するかどうかお知らせください。 –

    +0

    良いもの。 'PlatformServices'が存在しないことを知りました。 – Andrei

    関連する問題