2017-11-08 9 views
0

Dockerコンテナに展開するAsp.Net Core 2.0 Webサービスがあります。Dockerコンテナ内の依存パッケージのXmlドキュメントを取得

ウェブサービスでは、xmlドキュメントファイルを生成し、そのファイルをSwagger-uiで使用します。 これは、プロジェクト自体から生成されたxmlドキュメントではうまくいきますが、WebサービスがDockerコンテナにデプロイされているときに表示される組み込みパッケージに対して生成されたxmlコメントを取得できません。

nugetパッケージ(私たちによっても作成されました)にはxmlドキュメントファイルが含まれており、ローカルマシン上でサービスを実行しているときにそれを使い分けることができます。 ドキュメントは、.IncludeXmlCommentsを呼び出すことで手間取ることができます。ドキュメントへのパスは、アセンブリへのパスを取得し、.dll拡張子を.xmlに置き換えることによって決定されます。

私は、パッケージのxmlドキュメントファイルがコンテナに含まれていないため、見つからない可能性があります。 Dockerfileでは私はどちらかも/コピーパッケージのXMLドキュメントファイルを追加し、または公表資産のXMLドキュメントファイルの一部を作成する方法を知っているコマンドたいコマンド

COPY publish . 

を参照してください。 私のマシンだけでなく、堅牢な方法でこの作業を行う他のソリューションも歓迎します。

EDIT: Dockerコンテナにxml docファイルが追加されましたが、Swaggerはそのファイルで提供されている説明を表示しません。 私たちは、これに似たものを使用:{PackageNameには}あなたのパッケージの実際の名前に置き換えます

<Target Name="PrepublishScript" BeforeTargets="PrepareForPublish"> 
    <ItemGroup> 
     <DocFile Include="$(USERPROFILE)\.nuget\packages\{packagename}\**\lib\$(TargetFramework)\{PackageName}.xml" /> 
    </ItemGroup> 
    <Copy SourceFiles="@(DocFile)" DestinationFolder="$(PublishDir)" SkipUnchangedFiles="false" /> 
</Target> 

ているが。パス内のワイルドカードは、バージョンに依存しないようにしています(複数のバージョンがあるので、これで問題が発生するかどうかを確認する必要があります)。

答えて

0

私は自分の質問に答えます。同僚はこれを解決する方法を見つけました。 あなたはばかりは、次の手順を実行しnugetパッケージを変更する必要があります。

  1. 拡張子.targetsを持つファイルを作成し、そのフォルダには、プロジェクトで
  2. を「ビルド」フォルダを作成します(projectname.targetsを言います)コンテンツ

    <?xml version="1.0" encoding="utf-8"?> 
    <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <ItemGroup> 
        <None Include="$(MSBuildThisFileDirectory)projectname.xml"> 
         <Link>projectname.xml</Link> 
         <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
        </None> 
    </ItemGroup> 
    

  3. 編集csprojファイルを使用して、最終< /プロジェクト>トン前にこれを追加選択のあなたの名前のAG

    <ItemGroup> 
        <None Include="bin\$(Configuration)\$(TargetFramework)\projectname.xml" Pack="true" PackagePath="build" /> 
        <None Include="build\projectname.targets" Pack="true" PackagePath="build" /> 
    </ItemGroup> 
    
    <ItemGroup> 
        <Folder Include="build\" /> 
        <Folder Include="Properties\" /> 
    </ItemGroup> 
    

代替」プロジェクト名は、我々は我々のプロジェクトの名前を使用しました。 これらの変更により、パッケージのxmlドキュメントファイルがプロパティビルドアクション:なしを使用するプロジェクトのルートに追加され、出力ディレクトリにコピー:常にコピーされます。 その後、Dockerコンテナにデプロイされていても、Dockerファイルへの変更は必要ありません。

関連する問題