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



发布引用同一解决方案中的类库(项目(的 ASP.NET 项目 (NET Framework 4.7.1( 时,所有这些库都在其生成过程中生成了 XML 文档,已发布的输出中仅包含 ASP.NET 项目自己的 XML 文档文件。

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

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

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

我试过:

  • 在所述项目中包括XML文件,并将其标记为"内容"和"始终复制"以输出目录。
  • 更改不同的发布设置,这些设置似乎对此没有任何影响

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

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

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

但它仍然没有固定。一般讨论是这些 xml 注释是生成工件,不支持在发布时发布。但是,当使用 swagger,并让它使用 xml 文件生成文档时,发布工件的情况要强得多。(因为没有那时它根本不起作用(

第一个问题中提出的解决方案与您的解决方案惊人地相似。

松散地基于 Sam Stephens 的博客文章,我已将其添加到项目文件中,该文件在发布期间将所有 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>

我正在使用 Visual Studio 2022,我必须在项目文件的末尾包含以下代码:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- more configuration here ... -->
<PropertyGroup>
<CopyAllFilesToSingleFolderForPackageDependsOn>
CopyXmlDocuments;
$(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForPackageDependsOn>
<CopyAllFilesToSingleFolderForMsdeployDependsOn>
CopyXmlDocuments;
$(CopyAllFilesToSingleFolderForMsdeployDependsOn);
</CopyAllFilesToSingleFolderForMsdeployDependsOn>
</PropertyGroup>
<Target Name="CopyXmlDocuments">
<ItemGroup>
<XmlDocuments Include="$(OutDir)*.xml" />
<FilesForPackagingFromProject Include="%(XmlDocuments.Identity)">
<DestinationRelativePath>bin%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
</Project>

有关更多信息,请参阅此处。

最新更新