คุณรวมเอกสาร 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 ควรไปอยู่ในไดเร็กทอรีเป้าหมายอื่นหรือไม่?


คุณใช้คำสั่งอะไรในการสร้างแพ็คเกจ
พันเอก Panic

@ColonelPanic อัปเดตคำถามพร้อมคำสั่งและลิงก์ไปยังเอกสาร
John Nelson

ขอบคุณจอห์น ฉันบรรจุ csproj โดยตรงnuget pack library.csproj(ฉันไม่มี nuspec) แต่การแก้ไขใช้งานได้เหมือนกัน
พันเอก Panic

คำตอบ:


99

ปัญหาคือฉันไม่ได้ตรวจสอบ "สร้างเอกสาร Xml" สำหรับการกำหนดค่าการสร้างที่ฉันใช้ nuspec นั้นถูกต้อง

ป้อนคำอธิบายภาพที่นี่


6
ดีแล้วที่รู้. ฉันพยายามใช้ GUI เพื่อสร้างแพ็คเกจและพยายามให้ฉันย้ายไฟล์ XML ไปยังโฟลเดอร์เนื้อหาแทนที่จะเป็น lib ฟังไม่ถูกเลยอยากได้ความเห็นที่สอง ดีใจที่คุณมีโพสต์นี้ :-)
Mike Loux

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
Kape

การระบุ<DocumentationFile>ตัวเองช่วยให้คุณสามารถส่งออกไฟล์ได้ทุกที่ที่คุณต้องการ หากคุณไม่ระบุฉันคิดว่ามันทำให้มันอยู่ในเส้นทางที่ฉันให้ไว้ข้างต้นอย่างแท้จริง
bytedev
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.