我正在使用一个NuGet package的XML documentation file。
但是当我将包包含在 .NET Core 2.2应用中时, IntelliSense 中将不提供注释。
程序包或应用程序中是否缺少某些内容,以便能够使用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.xml 与 MakanalTech.CommonEntities一起包含在其中。 dll 。
但是,我想知道为什么xml文件从项目中的 MakanalTech.CommonEntities.xml 中删除了全名,而只将其中的 CommonEntities.xml 删除了。包装。也许这是问题的原因?
然后的问题是,当我将该软件包作为依赖项包含在另一个项目中时,所有XML注释/文档都不可见。因此,我无法将鼠标悬停在类型上以查看其描述,并且如果我偷看定义,则定义中将没有注释/文档。
类库产品 https://imgur.com/zbE7ngM(尚不能发布图片)
查看其他项目的定义: https://imgur.com/pwmvpX7
答案 0 :(得分:4)
最后在this帖子中找到了问题。从Visual Studio 2017来看,这似乎有很多错误,无法正确并自动处理此问题。
在.csproj文件中,我删除了<DocumentationFile>[filepath-to-xml]</DocumentationFile>
,并添加了<GenerateDocumentationFile>true</GenerateDocumentationFile>
。
然后我重新打包了该库,清除了我的nuget缓存,并重建了包含它的新项目,现在我可以看到所有的XML文档。
答案 1 :(得分:0)
在.NET Core 2.2应用程序中不可见的NuGet包XML文档
就像您发现“在 lib /netstandard1.3/目录中包含CommonEntities.xml以及MakanalTech.CommonEntities.dll的。一样,” .xml
文件夹中的lib
文件,然后根据文档From a convention-based working directory:
仅将添加.dll文件作为参考,将.xml
文件复制到项目文件夹。这就是XML文档在.NET Core 2.2应用程序中不可见的原因。
此外,由于您使用的是.netstandard项目,.xml
文件将被nuget issue 4837自动阻止复制到项目文件夹。
要解决此问题,我们必须创建带有选项.nuspec
的{{1}}文件,以包含contentFiles
文件并将此文件添加到项目中,请检查{ {3}}。
但是,如果您不想手动编辑每个发行版的.xml
,则可以使用构建后事件来自动打包nuget软件包,例如:
.nuspec
或者您可以直接从包中手动将.xml文件添加到项目中,该包位于路径nuget pack "$(.NuspecFilePath)\xxx.nuspec"
中。
希望这会有所帮助。