引用程序集的 xml 文档未在发布期间复制

Referenced assemblies' xml docs not copied during publish

在同一解决方案中发布引用 class 库(项目)的 ASP.NET 项目 (NET Framework 4.7.1) 时,所有这些项目都生成了 XML 文档作为它们的一部分构建,仅 ASP.NET 项目自己的 XML 文档文件包含在已发布的输出中。

使用 Swashbuckle API 文档需要这些文件。

这只是从 VS 发布期间的一个问题,而不是常规构建。我正在使用 VS Professional 2019 v16.4.2.

如何将引用的 class 库的 XML 文档文件作为发布的一部分包含在内? 这似乎是一个正常的用例我觉得我错过了一些明显的东西。

我试过:

松散地基于 Sam Stephens blog post 我已将其添加到项目文件中,它会在发布期间将所有 xml 文件复制到 bin 文件夹。如果有人想出了一个更简单的方法,请不要犹豫 post 一个答案:)

<PropertyGroup>
  <CopyAllFilesToSingleFolderForPackageDependsOn>
    $(CopyAllFilesToSingleFolderForPackageDependsOn);
    CopyXmlDocuments;
  </CopyAllFilesToSingleFolderForPackageDependsOn>
</PropertyGroup>
<Target Name="CopyXmlDocuments">
  <ItemGroup>
    <XmlDocuments Include="$(OutDir)*.xml" />
    <FilesForPackagingFromProject Include="%(XmlDocuments.Identity)">
      <DestinationRelativePath>bin\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
    </FilesForPackagingFromProject>
  </ItemGroup>
</Target>

关于这个问题有各种各样的讨论。

见: https://github.com/dotnet/sdk/issues/795

以及后续问题: https://github.com/dotnet/sdk/issues/1458

但仍未修复。普遍的讨论是这些 xml 评论是构建工件,不支持在发布时发布。然而,当使用 swagger 并让它使用 xml 文件来生成文档时,发布工件的情况就更加强烈了。 (因为没有 then 根本行不通)

The solution proposed 第一期中的解决方案与您的解决方案非常相似。