Як ви включаєте Xml Документи для бібліотеки класів у пакет NuGet?


104

Я створюю пакет 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 перейти в інший цільовий каталог?


Яку команду ви використовуєте для створення пакету?
Полковник Паніка

@ColonelPanic оновив питання із командою та посиланням на документи.
Джон Нельсон

Дякую, Джон. Я безпосередньо упаковую csproj nuget pack library.csproj(у мене немає nuspec), але виправлення працює так само.
Полковник Паніка

Відповіді:


99

Проблема полягала в тому, що я не перевірив "Створити документацію Xml" на конфігурацію збірки, яку я використовував. Цей нуспек правильний.

введіть тут опис зображення


6
Добре знати. Я намагався використати графічний інтерфейс для створення пакету, і він намагався змусити мене перемістити XML-файл у папку вмісту замість lib. Не здавалося правильним, тому я хотів отримати другу думку. Радий, що у вас була ця посада. :-)
Майк Лукс

12

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

<GenerateDocumentationFile>результати <DocumentationFile>вже є, тому я думаю, що потрібне лише одне з обох, див.: docs.microsoft.com/en-us/dotnet/csharp/codedoc
Kapé

Вказівка <DocumentationFile>себе просто дозволяє виводити файл куди завгодно. Якщо ви не вказуєте це, я думаю, що він буквально ставить його на шлях, який я вказав вище.
bytedev
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.