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ファイルは別のターゲットディレクトリに配置する必要がありますか?
問題は、使用しているビルド構成について「Generate Xml Documentation」をチェックしなかったことです。そのnuspecは正しいです。
.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>