繁体   English   中英

如何在 NuGet 包中包含类库的 Xml 文档?

[英]How do you include Xml Docs for a class library in a NuGet package?

我正在为 C# 类库创建一个 NuGet 包,我想将生成的 Xml 文档包含在该库中。 这是我的 nuspec 文件:

<?xml version="1.0" encoding="utf-8"?>
<package>
  <metadata>
    <id>MyLibrary</id>
    <version>1.0.0.0</version>
    <authors>John Nelson</authors>
    <language>en-US</language>
    <description>A C# class library</description>
  </metadata>
  <files>
    <file src="..\..\build\MyLibrary.dll" target="lib\Net40" />
    <file src="..\..\build\MyLibrary.xml" target="lib\Net40" />
  </files>
</package>

当我 使用此命令构建包时

nuget pack MyLibrary.nuspec

它会产生一个错误。 如果我删除该行:

<file src="..\..\build\MyLibrary.xml" target="lib\Net40" />

NuGet.exe 成功创建了 nupkg。 我什至可以解压缩包,并验证内容是否正确。 我究竟做错了什么? xml 文件是否应该进入不同的目标目录?

问题是我没有为我正在使用的构建配置检查“生成 Xml 文档”。 那个 nuspec 是正确的。

在此处输入图像描述

在 .NET Core/Standard 中,您可以通过编辑项目 XML 文件来执行此操作,例如:

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

<PropertyGroup>
    <DocumentationFile>bin\$(Configuration)\$(TargetFramework)\$(AssemblyName).xml</DocumentationFile>
</PropertyGroup>

这会将文档作为 XML 文件输出到输出程序集旁边。

编辑:作为旁注,一旦您启用GenerateDocumentationFile ,您可能会收到很多关于您的公共方法的警告,因为它们没有添加完整的文档标签。 如果您想禁用这些警告,只需在PropertyGroup中添加:

<NoWarn>$(NoWarn);1591</NoWarn>

最简单的解决方案是简单地添加@bytedev 答案的前半部分。 这默认为正确的位置,并将正确打包。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM