【问题标题】:Referenced assemblies' xml docs not copied during publish发布期间未复制引用的程序集的 xml 文档
【发布时间】:2020-01-06 21:49:21
【问题描述】:

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

这些文件对于带有 Swashbuckle 的 API 文档是必需的。

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

如何将引用的类库的 XML 文档文件包含在发布中?这似乎是一个正常的用例,我觉得我缺少一些明显的东西。

我试过了:

  • 在上述项目中包含 XML 文件并将它们标记为“内容”和“始终复制”到输出目录。没有变化。
  • 更改不同的发布设置,似乎没有任何影响

【问题讨论】:

    标签: asp.net publish visual-studio-2019 swashbuckle


    【解决方案1】:

    大致基于Sam Stephens blog post 我已将此添加到项目文件中,该文件在发布期间将所有 xml 文件复制到 bin 文件夹。如果有人提出更简单的方法,请不要犹豫发布答案:)

    <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>
    

    【讨论】:

      【解决方案2】:

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

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

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

      但它仍然没有修复。一般的讨论是这些xml cmets是构建工件,不支持发布时发布。但是,当使用 swagger 并让它使用 xml 文件生成文档时,发布工件的情况要强得多。 (因为没有 then 它根本行不通)

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

      【讨论】:

        猜你喜欢
        • 2017-02-25
        • 1970-01-01
        • 1970-01-01
        • 2011-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-09
        • 1970-01-01
        相关资源
        最近更新 更多