我们有一个Asp.Net Core 2.0 Web服务,我们将其部署在Docker容器中。
对于Web服务,我们生成一个xml文档文件,并在Swagger-ui中使用该文件。
这对于从项目本身生成的xml文档非常有效,但是当将Web服务部署在Docker容器中时,我看不到为包含的软件包生成的xml注释。
nuget包(也由我们创建)确实包含一个xml文档文件,我们可以在本地计算机上运行该服务时大张旗鼓地使用它。
可通过调用.IncludeXmlComments来使该文档变得张扬,并通过获取程序集的路径,然后用.xml替换.dll扩展名来确定文档的路径。
我怀疑该软件包的xml doc文件未包含在容器中,因此无法找到。在Dockerfile中,我看到了命令
COPY publish .
我想要一个还可以添加/复制包的xml doc文件的命令,或者我想知道如何使xml doc文件成为发布 Assets 的一部分。
任何其他以健壮方式(而不是仅在我的机器上)使该工作有效的解决方案也都受到欢迎。
编辑:
现在,我们在Docker容器中有了额外的xml doc文件,但是Swagger仍然没有显示该文件中提供的描述(在本地运行时会显示)。
我们使用了类似的东西:
<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>
其中{PackageName}应替换为您的包裹的实际名称。路径中的通配符使它保持版本独立性(尽管我们必须检查它是否现在会引起问题,因为我们有多个版本)。
最佳答案
确保已选中xmlt复选框的的XML文档复选框,在项目属性->构建-> XML文档文件下发布配置。您可能已经检查了它的调试配置,但没有检查发行配置。选择项目属性下的下拉菜单中的发布,然后选中XML文档文件复选框。除非您选中版本配置复选框,否则您的docker RUN dotnet发布“” -c版本-o / app将不会生成文档XML文件。
关于docker - 获取Docker容器中依赖包的Xml文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47179239/