Как включить документы Xml для библиотеки классов в пакет NuGet?

Я создаю пакет NuGet для библиотеки классов C#, и я хотел бы включить сгенерированную документацию 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 перейти в другой целевой каталог?

3 ответа

Решение

Проблема заключалась в том, что я не проверял "Сгенерировать документацию 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>
Другие вопросы по тегам