如何创建包含XML智能感知数据的NuGet包

18
该链接如何创建一个 XML 智能提示文件来生成 DLL 文件?讲解了如何构建你的 dlls,以便包含所有文档头的 XML 文件,并使它们在 IntelliSense 弹出窗口中可用。
在我们公司中,我们经常使用内部 NuGet 包源来分发我们自己的 dlls。当我为包源创建 NuGet 包时,如何确保其他人从包源获取 dll 并使 IntelliSense 为他们显示文档头呢?

请参见 https://dev59.com/OG435IYBdhLWcg3wyzaa - Colonel Panic
这个回答解决了你的问题吗?如何在NuGet包中包含类库的Xml文档? - Jeremy Caney
2个回答

15

如果您将XML文件与NuGet包一同放置在同一文件夹中的DLL中进行分发,那么Visual Studio将会找到这些XML文件,并为您的程序集显示智能感知。

要分发智能感知XML文件,您需要将它们添加到您的.nuspec文件中,例如:

<files>
    <file src="bin\IronPython.dll" target="lib\Net40" />
    <file src="bin\IronPython.xml" target="lib\Net40" />
</files>

我已经尝试过这个了。我错过的部分是在创建包之前需要在.nuspec文件中提到.xml文件。你能提一下这个吗,然后我会把你标记为正确的。 - David

7
tl;dr 文件需要以 .xml 格式保存,而不是 .XML
通过先启用生产环境,选中输出部分中的 XML 文档文件,在生成选项卡下,我成功将 XML 文件包含在内。注意:由于某种原因,我不得不手动将扩展名从 .XML 改为小写的 .xml。结果可能会有所不同。这与你引用的问题相同:如何为我的 DLL 创建 XML Intellisense 文件?
完成后,我在项目目录中创建了 Nuspec 文件。以下是示例,你也可以使用 nuget spec MyAssembly.dll 来生成它,但一定要编辑并适当设置值。
<?xml version="1.0"?>
<package >
  <metadata>
    <id>$id$</id>
    <version>1.0.0</version>
    <title>Title for your package</title>
    <authors>Package Author</authors>
    <owners>Package Owner</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>A description of your library</description>
    <releaseNotes>Release notes for this version.</releaseNotes>
    <copyright>Copyright 2013</copyright>
    <tags>tag1 tag2</tags>
  </metadata>
</package>

完成此操作后,我使用NuGet进行打包。注意,由于我使用的是64位操作系统,因此我必须指定平台,但是我的项目中没有x64目标,只有AnyCPU。

nuget pack MyAssembly.csproj -Prop Configuration=Release;Platform=AnyCPU -build

自动将程序集及其相关文档包含在软件包中。另外,您在项目中使用的任何软件包都会被添加到依赖项列表中。
有关更多信息,请参见http://docs.nuget.org/docs/creating-packages/creating-and-publishing-a-package

4
将XML的大写改为小写对我有用。这很令人悲哀。 - Chris F Carroll

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