Je crée un package NuGet pour une bibliothèque de classes C # et je souhaite inclure la documentation Xml générée avec la bibliothèque. Ceci est mon fichier 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>
Lorsque je construis le package avec cette commande :
nuget pack MyLibrary.nuspec
Cela génère une erreur. Si je supprime la ligne:
<file src="..\..\build\MyLibrary.xml" target="lib\Net40" />
NuGet.exe crée avec succès le fichier nupkg. Je peux même décompresser le paquet et vérifier que le contenu est correct. Qu'est-ce que je fais mal? Le fichier xml doit-il aller dans un répertoire cible différent?
c#
nuget
nuget-package
John Nelson
la source
la source
nuget pack library.csproj
(je n'ai pas de nuspec), mais le correctif fonctionne de la même manière.Réponses:
Le problème était que je n'ai pas vérifié "Générer la documentation Xml" pour la configuration de construction que j'utilisais. Ce nuspec est correct.
la source
Dans .NET Core / Standard, vous pouvez le faire en modifiant le fichier XML du projet, par exemple:
Cela produira la documentation sous forme de fichier XML à côté de votre assembly de sortie.
EDIT: En remarque, une fois que vous l'activez,
GenerateDocumentationFile
vous recevrez probablement de nombreux avertissements sur vos méthodes publiques pour ne pas avoir ajouté de balises de documentation complètes. Si vous souhaitez désactiver ces avertissements, ajoutez simplement lePropertyGroup
:la source
<GenerateDocumentationFile>
résultats dans un<DocumentationFile>
déjà, donc je pense qu'un seul des deux est requis, voir: docs.microsoft.com/en-us/dotnet/csharp/codedoc<DocumentationFile>
vous spécifier vous permet simplement de sortir le fichier où vous le souhaitez. Si vous ne le spécifiez pas, je pense que cela le met littéralement dans le chemin que j'ai fourni ci-dessus.