Je crée un package NuGet pour une bibliothèque de classe C #, et je voudrais inclure la documentation Xml générée avec la bibliothèque. Voici 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>
Quand je compile le paquet 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 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?
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.
Dans .NET Core/Standard, vous pouvez le faire en modifiant le fichier XML du projet, par exemple:
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>
<PropertyGroup>
<DocumentationFile>bin\$(Configuration)\$(TargetFramework)\$(AssemblyName).xml</DocumentationFile>
</PropertyGroup>
Cela produira la documentation sous forme de fichier XML à côté de votre assembly de sortie.
EDIT: En remarque une fois que vous activez GenerateDocumentationFile
, vous obtiendrez 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 le PropertyGroup
:
<NoWarn>$(NoWarn);1591</NoWarn>