NuGetパッケージにクラスライブラリのXMLドキュメントをどのように含めますか?


103

C#クラスライブラリのNuGetパッケージを作成しています。生成されたXmlドキュメントをライブラリに含めたいのですが。これは私の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>

このコマンドでパッケージビルドすると

nuget pack MyLibrary.nuspec

エラーが発生します。行を削除すると:

<file src="..\..\build\MyLibrary.xml" target="lib\Net40" />

NuGet.exeはnupkgを正常に作成します。パッケージを解凍して、内容が正しいことを確認することもできます。何が悪いのですか?xmlファイルを別のターゲットディレクトリに配置する必要がありますか?


パッケージのビルドにはどのコマンドを使用しますか?
大佐パニック

@ColonelPanicがコマンドとドキュメントへのリンクを含む質問を更新しました。
John Nelson、

ジョンに感謝します。私はcsprojを直接パッケージ化していますnuget pack library.csproj(nuspecを持っていません)が、修正は同じように機能します。
大佐パニック

回答:


98

問題は、使用しているビルド構成の[Generate Xml Documentation]をチェックしなかったことです。そのnuspecは正しいです。

ここに画像の説明を入力してください


6
知ってよかった。GUIを使用してパッケージを作成しようとしていたところ、XMLファイルをlibではなくcontentフォルダーに移動させようとしていました。正しくなかったので、セカンドオピニオンを得たいと思いました。あなたがこの記事を持っていてうれしいです。:-)
Mike Loux、2012年

11

.NET Core / Standardでは、プロジェクトXMLファイルを編集することでこれを行うことができます。次に例を示します。

<PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>

<PropertyGroup>
    <DocumentationFile>bin\$(Configuration)\$(TargetFramework)\$(AssemblyName).xml</DocumentationFile>
</PropertyGroup>

これにより、ドキュメントが出力アセンブリの横にあるXMLファイルとして出力されます。

編集: 補足として、GenerateDocumentationFile完全なドキュメンテーションタグが追加されていないため、おそらくパブリックメソッドに対して多くの警告が表示されます。これらの警告を無効にしたい場合は、単にを追加してPropertyGroupください:

<NoWarn>$(NoWarn);1591</NoWarn>

<GenerateDocumentationFile>結果は<DocumentationFile>すでに得られているので、どちらか一方のみが必要だと思います。docs.microsoft.com
us

Specifiying <DocumentationFile>自分をちょうどあなたが出力にしたい、これまでのファイルを可能にします。あなたがそれを指定しない場合、私は文字通りそれを上記で提供したパスに置くと思います。
bytedev
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.