Saya membuat paket NuGet untuk perpustakaan kelas C #, dan saya ingin menyertakan Dokumentasi Xml yang dihasilkan dengan perpustakaan. Ini adalah file nuspec saya:
<?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>
Ketika saya membangun paket dengan perintah ini :
nuget pack MyLibrary.nuspec
Ini menghasilkan kesalahan. Jika saya menghapus garis:
<file src="..\..\build\MyLibrary.xml" target="lib\Net40" />
NuGet.exe berhasil membuat nupkg. Saya bahkan dapat mengekstrak paketnya, dan memverifikasi bahwa isinya sudah benar. Apa yang saya lakukan salah? Haruskah file xml masuk ke direktori target yang berbeda?
c#
nuget
nuget-package
John Nelson
sumber
sumber
nuget pack library.csproj
(saya tidak memiliki nuspec), tetapi perbaikannya berfungsi sama.Jawaban:
Masalahnya adalah saya tidak mencentang "Generate Xml Documentation" untuk konfigurasi build yang saya gunakan. Nuspec itu benar.
sumber
Di .NET Core / Standard Anda dapat melakukan ini dengan mengedit file XML proyek, misalnya:
Ini akan menampilkan dokumentasi sebagai file XML di samping perakitan output Anda.
EDIT: Sebagai catatan samping setelah Anda mengaktifkan
GenerateDocumentationFile
Anda mungkin akan mendapatkan banyak peringatan tentang metode publik Anda karena tidak menambahkan tag dokumentasi lengkap. Jika Anda ingin menonaktifkan peringatan ini cukup tambahkanPropertyGroup
:sumber
<GenerateDocumentationFile>
hasilnya<DocumentationFile>
sudah, jadi saya pikir hanya satu dari keduanya yang diperlukan, lihat: docs.microsoft.com/en-us/dotnet/csharp/codedoc<DocumentationFile>
diri Anda sendiri hanya memungkinkan Anda mengeluarkan file di mana pun Anda inginkan. Jika Anda tidak menentukannya, saya pikir itu secara harfiah meletakkannya di jalur yang saya berikan di atas.