Tworzę pakiet NuGet dla biblioteki klas C # i chciałbym dołączyć do biblioteki wygenerowaną dokumentację XML. To jest mój plik 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>
Kiedy buduję pakiet za pomocą tego polecenia :
nuget pack MyLibrary.nuspec
Generuje błąd. Jeśli usunę linię:
<file src="..\..\build\MyLibrary.xml" target="lib\Net40" />
NuGet.exe pomyślnie tworzy plik nupkg. Mogę nawet rozpakować paczkę i sprawdzić, czy zawartość jest poprawna. Co ja robię źle? Czy plik xml powinien trafić do innego katalogu docelowego?
c#
nuget
nuget-package
John Nelson
źródło
źródło
nuget pack library.csproj
Pakuję csproj bezpośrednio (nie mam nuspec), ale poprawka działa tak samo.Odpowiedzi:
Problem polegał na tym, że nie sprawdziłem opcji „Generuj dokumentację XML” dla konfiguracji kompilacji, której używałem. Ten nuspec jest poprawny.
źródło
W .NET Core / Standard możesz to zrobić, edytując plik XML projektu, na przykład:
Spowoduje to wyświetlenie dokumentacji jako pliku XML obok zestawu wyjściowego.
EDYCJA: Na marginesie, po włączeniu
GenerateDocumentationFile
prawdopodobnie otrzymasz wiele ostrzeżeń dotyczących publicznych metod, ponieważ nie dodano pełnych tagów dokumentacji. Jeśli chcesz wyłączyć te ostrzeżenia, po prostu dodajPropertyGroup
:źródło
<GenerateDocumentationFile>
daje<DocumentationFile>
już wynik, więc myślę, że tylko jeden z nich jest wymagany, zobacz: docs.microsoft.com/en-us/dotnet/csharp/codedoc<DocumentationFile>
siebie pozwala tylko na wydrukowanie pliku w dowolnym miejscu. Jeśli nie podasz tego, myślę, że dosłownie umieszcza to na ścieżce, którą podałem powyżej.