Ich erstelle ein NuGet-Paket für eine C # -Klassenbibliothek und möchte der Bibliothek eine generierte XML-Dokumentation hinzufügen. Dies ist meine Nuspec-Datei:
<?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>
Wenn ich das Paket mit diesem Befehl erstelle :
nuget pack MyLibrary.nuspec
Es wird ein Fehler generiert. Wenn ich die Zeile entferne:
<file src="..\..\build\MyLibrary.xml" target="lib\Net40" />
NuGet.exe erstellt das nupkg erfolgreich. Ich kann das Paket sogar entpacken und überprüfen, ob der Inhalt korrekt ist. Was mache ich falsch? Sollte die XML-Datei in ein anderes Zielverzeichnis verschoben werden?
c#
nuget
nuget-package
John Nelson
quelle
quelle
nuget pack library.csproj
(ich habe kein nuspec), aber das Update funktioniert genauso.Antworten:
Das Problem war, dass ich "XML-Dokumentation generieren" für die von mir verwendete Build-Konfiguration nicht überprüft habe. Dieser Nuspec ist richtig.
quelle
In .NET Core / Standard können Sie dies tun, indem Sie die XML-Projektdatei bearbeiten, zum Beispiel:
Dadurch wird die Dokumentation als XML-Datei neben Ihrer Ausgabebaugruppe ausgegeben.
BEARBEITEN: Als Randnotiz erhalten Sie nach dem Aktivieren
GenerateDocumentationFile
wahrscheinlich viele Warnungen zu Ihren öffentlichen Methoden , wenn Sie keine vollständigen Dokumentations-Tags hinzugefügt haben. Wenn Sie diese Warnungen deaktivieren möchten, fügen Sie einfach Folgendes hinzuPropertyGroup
:quelle
<GenerateDocumentationFile>
führt zu einem<DocumentationFile>
bereits, daher denke ich, dass nur eines von beiden erforderlich ist, siehe: docs.microsoft.com/en-us/dotnet/csharp/codedoc<DocumentationFile>
selbst angeben, können Sie die Datei nur ausgeben, wo immer Sie möchten. Wenn Sie es nicht angeben, wird es meiner Meinung nach buchstäblich in den oben angegebenen Pfad eingefügt.