如何创建包含XML intellisense数据的NuGet包

时间:2012-10-26 14:31:33

标签: visual-studio-2010 visual-studio intellisense nuget nuget-package

这个链接How do I create an XML Intellisense file for my DLL?解释了如何构建你的dll,以便包含一个包含所有文档头的XML文件,以便它们在那些IntelliSense弹出窗口中可用。

在我的公司,我们经常使用内部NuGet包源分发我们自己的dll。当我为包源创建NuGet包时,如何确保其他人从包源获取dll,IntelliSense会为它们显示文档标题?

2 个答案:

答案 0 :(得分:15)

如果您将带有NuGet包的xml文件分发到与dll相同的文件夹中,则Visual Studio将找到这些xml文件并显示程序集的intellisense。

要解析intellisense xml文件,您需要将它们添加到.nuspec文件中,例如:

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

答案 1 :(得分:6)

tl; dr 文档文件必须为.xml而不是.XML

我首先使用Build选项卡启用生产,然后在Output部分中检查XML Documentation File,从而获得XML文件。注意:由于某种原因,我不得不手动将扩展名从.XML更改为小写.xml。因人而异。这与您引用的问题How do I create an XML Intellisense file for my DLL?相同。

完成后,我在项目目录中创建了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