如何在从项目文件构建的NuGet包中包含XML文档文件?

54

我认为在NuGet包中包含由C#构建生成的XML文档文件是一种通常的良好实践,可为使用者提供智能感知文档。

然而,在使用VS 2017的项目文件格式构建包时,我不清楚如何完成这个操作。

这是否可能?

显然,我可以切换到维护nuspec文件,但VS2017格式非常方便,可以将版本和依赖项都放在一个地方。


可能是重复问题:https://dev59.com/OG435IYBdhLWcg3wyzaa#58165750 - bytedev
2个回答

74
只要你在csproj文件中像这样设置GenerateDocumentationFile

As long as you set GenerateDocumentationFile in your csproj file like this:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <GenerateDocumentationFile>true</GenerateDocumentationFile>
  </PropertyGroup>

</Project>

如果所有默认设置都正确,将会在正确的位置生成文档文件,并将其包含在NuGet包中。

如果Visual Studio添加了DocumentationFile或其他元素,您可以删除它们并替换为单个GenerateDocumentationFile属性。


8
运作得非常好!令人沮丧的是,VS会添加 DocumentationFile - ChaseMedallion
但是这个文档文件将从哪里创建?它应该在哪里/内容在哪里? - Hrvoje Batrnek
1
你仍可以在csproj中使用DocumentationFile元素来控制XML文件的输出位置。只需记住在.nuspec文件中,将文件元素指向相同的XML文件即可。 - bytedev

7

针对其他遇到相同问题的人 - 如果已接受的答案无法解决问题,请确保你在使用的构建配置中设置了“包括XML文档”选项(不仅仅是默认的调试模式)。

在Visual Studio中: 输入图片说明

或者在csproj文件中:

 <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
    <GenerateDocumentationFile>true</GenerateDocumentationFile>
  </PropertyGroup>

3
如果您删除 Condition 属性,它将为所有生成配置生成 XML 文件。 - bytedev
哎呀,我在 Debug 配置中勾选了“XML 文档文件”,但没有在 Release 配置中勾选。猜猜我在 Azure Devops 构建管道中使用了哪个配置,却无法弄清楚为什么 XML 注释文件未包含在构建的 NuGet 包中? :p - David Alan Condit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接