【问题标题】:NuGet package XML documentation not visible in .NET Core 2.2 appNuGet 包 XML 文档在 .NET Core 2.2 应用程序中不可见
【发布时间】:2018-10-19 11:45:56
【问题描述】:

我使用的是NuGet package,它有一个XML documentation file

但是当我将包包含在 .NET Core 2.2 应用程序中时,IntelliSense 无法使用 cmets。

我是否在包或我的应用程序中缺少某些东西才能使用 IntelliSense 查看文档?

使用 VisualStudio 2017、Windows 10

清晰度更新

NuGet 包是一个 .NET Standard 1.3 类库。在 Visual Studio 中,当我构建项目时,我包含了生成包和文档文件的选项。在项目文件中,我看到了以下 PropertyGroup:

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
    <DocumentationFile>C:\Users\[username]\[local path]\CommonEntities\CommonEntities\CommonEntities.xml</DocumentationFile>
</PropertyGroup>

当我打开包时,我可以在 lib/netstandard1.3/ 目录中看到 CommonEntities.xmlMakanalTech.CommonEntities 一起包含。 dll.

但是,我想知道为什么 xml 文件从 MakanalTech.CommonEntities.xml 中删除了全名,因为它在项目中只是 CommonEntities.xml包裹。也许这就是问题的原因?

问题是当我将包作为依赖项包含在另一个项目中时,没有任何 XML cmets/文档可见。因此,我无法将鼠标悬停在某个类型上以查看其描述,并且如果我查看定义,则定义中没有任何 cmets/文档。

类库产品 https://imgur.com/zbE7ngM(还不能发图片)

查看其他项目的定义: https://imgur.com/pwmvpX7

【问题讨论】:

  • 嗨,你的意思是智能感知不可用的 cmets,你能分享一下你是如何调用它的吗?如果您想在应用程序中显示 XML 文档文件,请检查此类似问题:stackoverflow.com/questions/52880687/…,将 xx.cs 文件替换为 XML 文档文件。
  • 当我在 Visual Studio 中构建和打包项目时,我包含生成文档文件的复选框。所以 XML 文件在项目中并包含在 .csproj 文件中。但是,我现在看到 DocumentationFile 引用仅在我的机器上是本地的,这对于使用该项目的其他人来说毫无意义。我将看看最新的包,看看它包含在 .nuspec 文件中的内容。我只是使用 Visual Studio 来打包项目,而不是手动创建它。所以我的假设是它打包了它需要的所有东西,我不需要在每个版本中手动编辑 .nuspec。
  • 我用我看到的实际情况更新了这个问题。

标签: asp.net-core .net-core visual-studio-2017 asp.net-core-mvc intellisense


【解决方案1】:

终于从this的帖子中找到了问题。从 Visual Studio 2017 看来,这似乎有很多错误,无法正确和自动处理。

在 .csproj 文件中,我删除了 &lt;DocumentationFile&gt;[filepath-to-xml]&lt;/DocumentationFile&gt; 并添加了 &lt;GenerateDocumentationFile&gt;true&lt;/GenerateDocumentationFile&gt;

然后我重新打包了库,清除了我的 nuget 缓存,并在包含它的地方重建了新项目,现在我可以看到所有 XML 文档。

【讨论】:

    【解决方案2】:

    NuGet 包 XML 文档在 .NET Core 2.2 应用中不可见

    就像您发现的“在 CommonEntities.xml 与 MakanalTech.CommonEntities.dll 一起包含的 lib/netstandard1.3/ 目录中。”, lib文件夹下的.xml文件,然后根据文件From a convention-based working directory

    只会添加 .dll 文件作为参考,.xml 文件将被复制到项目文件夹中。这就是 XML 文档在 .NET Core 2.2 应用程序中不可见的原因。

    此外,由于您使用的是 .netstandard 项目,.xml 文件将被 nuget issue 4837 自动阻止复制到项目文件夹中。

    要解决这个问题,我们必须创建带有选项contentFiles.nuspec 文件以包含.xml 文件并将此文件添加到项目中,请查看other thread 的详细信息。

    但如果您不想在每个版本中手动编辑.nuspec,您可以使用构建后事件自动打包 nuget 包,例如:

    nuget pack "$(.NuspecFilePath)\xxx.nuspec" 
    

    或者您可以直接从包中手动将 .xml 文件添加到项目中,该包在路径中:C:\Users\&lt;UserName&gt;\.nuget\packages

    希望这会有所帮助。

    【讨论】:

    • 我不太明白你在说什么,但它确实让我找到了一些额外的搜索路径,找到了this 答案。
    猜你喜欢
    • 1970-01-01
    • 2019-11-27
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    • 2019-07-26
    • 2021-01-23
    • 2020-03-08
    • 1970-01-01
    相关资源
    最近更新 更多