类库中未打包Xml文档。

3

我有两个项目,MyModels(包含类模型)和MyExample。XML文件是在MyModels项目中创建的,这很好。

现在,在MyExample项目中,我通过nuget安装引用了MyModels,但是当安装nuget包时,如何将XML文档包含在包中呢?(它总是丢失的)


这是什么项目类型?您使用集成NuGet的csproj(VS 2017“基于sdk”的csproj)还是nuspec进行打包? - Martin Ullrich
@001,请问您能否分享一下这个问题的最新信息? - Leo Liu
我手动将 XML 文件复制到正确的目录,因为无法使其工作。 :( - 001
1个回答

3

类库中未打包XML文档

如果您在常规的.csproj类型项目中而不是基于SDK的项目中,可以使用.nuspec文件中的<files>节点直接包含XML文档以便打包,该节点跟随<metadata>标签:

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

然后使用以下命令构建该软件包
nuget pack MyModels.nuspec

NuGet.exe成功创建了nupkg:

enter image description here

如果你正在使用新的.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),在.csproj文件中设置GenerateDocumentationFile,然后在项目属性的Package选项卡上勾选“生成NuGet包”,以此来生成文档。

enter image description here

构建完成后,在输出文件夹生成了NuGet包:

enter image description here

注意:如果您想将XML文档添加到MyExample项目中,您应该使用内容文件:

https://learn.microsoft.com/en-us/nuget/reference/nuspec#including-assembly-files

希望这有所帮助。

谢谢您的回复,Leo。我正在使用.NET Core 2,这个版本也适用吗? - 001
@001,是的,你只需要在.nuspec文件中使用netcoreapp2.0,具体细节请查看我的更新答案。 - Leo Liu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接