web-dev-qa-db-ja.com

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

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>

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

nuget pack MyLibrary.nuspec

エラーを生成します。行を削除した場合:

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

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

96
John Nelson

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

enter image description here

94
John Nelson

.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>
7
bytedev