Làm cách nào để bạn bao gồm Tài liệu Xml cho thư viện lớp trong gói NuGet?


103

Tôi đang tạo gói NuGet cho thư viện lớp C # và tôi muốn bao gồm Tài liệu Xml đã tạo với thư viện. Đây là tệp nuspec của tôi:

<?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>

Khi tôi xây dựng gói bằng lệnh này :

nuget pack MyLibrary.nuspec

Nó tạo ra một lỗi. Nếu tôi xóa dòng:

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

NuGet.exe tạo thành công nupkg. Tôi thậm chí có thể giải nén gói và xác minh rằng nội dung là chính xác. Tôi đang làm gì sai? Tệp xml có nên đi vào một thư mục đích khác không?


Bạn sử dụng lệnh nào để xây dựng gói?
Colonel Panic

@ColonelPanic đã cập nhật câu hỏi bằng lệnh và liên kết tới tài liệu.
John Nelson

Cảm ơn John. Tôi đang đóng gói csproj trực tiếp nuget pack library.csproj(tôi không có nuspec), nhưng bản sửa lỗi hoạt động giống nhau.
Colonel Panic

Câu trả lời:


98

Vấn đề là tôi đã không kiểm tra "Tạo tài liệu Xml" cho cấu hình bản dựng mà tôi đang sử dụng. Nuspec đó là chính xác.

nhập mô tả hình ảnh ở đây


6
Tốt để biết. Tôi đang thử sử dụng GUI để tạo một gói và nó đang cố gắng khiến tôi chuyển tệp XML sang thư mục nội dung thay vì lib. Có vẻ không đúng, vì vậy tôi muốn có ý kiến ​​thứ hai. Rất vui vì bạn đã có bài viết này. :-)
Mike Loux

11

Trong .NET Core / Standard, bạn có thể thực hiện việc này bằng cách chỉnh sửa tệp XML của dự án, ví dụ:

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

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

Thao tác này sẽ xuất tài liệu dưới dạng tệp XML bên cạnh cụm đầu ra của bạn.

CHỈNH SỬA: Như một lưu ý phụ sau khi bật, GenerateDocumentationFilebạn có thể sẽ nhận được nhiều cảnh báo về các phương thức công khai của mình vì không thêm thẻ tài liệu đầy đủ. Nếu bạn muốn tắt các cảnh báo này, chỉ cần thêm PropertyGroup:

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

<GenerateDocumentationFile>đã có kết quả <DocumentationFile>, vì vậy tôi nghĩ chỉ cần một trong hai, hãy xem: docs.microsoft.com/en-us/dotnet/csharp/codedoc
Kapé

Việc <DocumentationFile>tự xác định chỉ cho phép bạn xuất tệp ở bất kỳ đâu bạn muốn. Nếu bạn không chỉ định nó, tôi nghĩ nó thực sự đặt nó vào đường dẫn mà tôi đã cung cấp ở trên.
bytedev
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.