Xml 文档未打包在类库中
如果您在非“基于 SDK”的普通 .csproj 类型项目中,则可以使用 .nuspec 文件中的 <files> 节点直接包含 XML 文档以包含在包中,该节点位于 @ 后面987654331@标签:
<files>
<file src="bin\Debug\MyModels.dll" target="lib\Net45" />
<file src="bin\Debug\MyModels.xml" target="lib\Net45" />
</files>
以下是我的.nuspec:
<?xml version="1.0"?>
<package >
<metadata>
<id>MyModels</id>
<version>1.0.0</version>
<authors>Tester</authors>
<owners>Tester</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Package description</description>
<releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
<copyright>Copyright 2018</copyright>
<tags>Tag1 Tag2</tags>
</metadata>
<files>
<file src="bin\Debug\MyModels.dll" target="lib\Net45" />
<file src="bin\Debug\MyModels.xml" target="lib\Net45" />
</files>
</package>
然后build the package with this command:
nuget pack MyModels.nuspec
NuGet.exe 成功创建 nupkg:
如果您使用的是新的 .csproj 类型项目(基于 VS2017 SDK),您可以在您的 csproj 文件中设置 GenerateDocumentationFile:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
</PropertyGroup>
</Project>
使用选项GenerateDocumentationFile,MSBuild 会将所有生成文件包含在 nuget 包中。
另外,如果你想把XML文档放到MyExample的项目中,你可以把目标改成内容:
<files>
<file src="bin\Debug\MyModels.dll" target="lib\Net45" />
<file src="bin\Debug\MyModels.xml" target="Content\MyModels.xml" />
</files>
希望这会有所帮助。
评论更新:
我用的是.NET Core 2,是一样的吗?
是的,你只需要更新.nuspec文件中的src和target:
<files>
<file src="bin\Debug\netcoreapp2.0\MyModels.dll" target="lib\netcoreapp2.0" />
<file src="bin\Debug\netcoreapp2.0\MyModels.xml" target="lib\netcoreapp2.0" />
</files>
或者你可以直接使用新的.csproj类型项目(基于VS2017 SDK),将GenerateDocumentationFile设置为.csproj文件,然后在属性的Package选项卡上勾选“Generate NuGet Package on build”复选框项目:
构建后,在输出文件夹生成nuget包:
注意:如果你想将 XML 文档添加到 MyExample 的项目中,你应该使用内容文件:
https://docs.microsoft.com/en-us/nuget/reference/nuspec#including-assembly-files
希望这会有所帮助。