文档在 NuGet 包中消失
Documentation disappears in NuGet package
我用 C# 编写了一个 class 库,我需要将其推送到私有 NuGet 服务器 (v3.4.1.0)。我用 XML 文档注释装饰了我的 classes 和方法。
XML 文档文件 选项在项目属性面板的 Build 选项卡上被选中,项目构建成功并且xml 文件在项目的根文件夹中生成,与程序集同名。
在 .csproj 文件中,相关部分如下所示:
<PropertyGroup>
<DocumentationFile>absolutePathTo\assemblyName.xml</DocumentationFile>
</PropertyGroup>
IntelliSense (VS2019 16.9.0) 识别文档并正确显示它,即使在同一解决方案下的其他项目中也是如此。
当我生成 NuGet 包时,它会在项目的 bin\Debug 文件夹中创建。如果我将其作为 zip 存档打开,则可以在具有匹配名称的 lib\netstandard2.1 文件夹中找到 DLL 和文档 XML。
一旦我将这个包从私有 NuGet 服务器安装到另一个项目,它就可以正常工作,但会丢失完整的文档。 IntelliSense 不再显示我的评论,程序集元数据似乎也没有。
有人可以支持我吗?
这很正常。对于 xml 文档,它在 new-sdk 样式项目下是特殊的。 xml文件只能复制到非sdk net framework项目中,new-sdk net core项目不可以。 .
所以您应该另外尝试这些步骤以获得您想要的:
1) 在你的 nuget 项目的 csproj
文件下输入这些节点。
<ItemGroup>
<None Include="xxx\absolutePathTo\assemblyName.xml"(the path of the xml file under your project folder) Pack="true">
<PackageCopyToOutput>true</PackageCopyToOutput>
</None>
</ItemGroup>
2) 之后,重新打包您的 nuget 项目,在安装新版本之前,请 clean nuget caches first 或删除 [=12= 下的所有文件]
就个人而言,我让 Visual Studio 为我处理事情。
如果您 right-click 在项目中,并选择 Properties,
在 Build -> Output 区域,您应该会在 Documentation file 下看到一个复选框,标签为 Generate a file containing API 文档。。
勾选此项时,下方会出现一个新选项:XML 文档文件路径。但是文件选择器被标记为 Optional path for the API documentation file。留空以使用默认位置。.
仅供参考:默认位置在构建项目时生成的 EXE/DLL 旁边。
当您下次构建代码时(对于其他阅读者,我假设您已经在 Package[=26] 中的 Generate NuGet package on build =] 区域也被选中)它还会将 XML 文档打包到生成的 NuGet 包中。
从这个新包的用户的角度来看,Visual Studio 会选择里面的 XML 文档。
我用 C# 编写了一个 class 库,我需要将其推送到私有 NuGet 服务器 (v3.4.1.0)。我用 XML 文档注释装饰了我的 classes 和方法。
XML 文档文件 选项在项目属性面板的 Build 选项卡上被选中,项目构建成功并且xml 文件在项目的根文件夹中生成,与程序集同名。
在 .csproj 文件中,相关部分如下所示:
<PropertyGroup>
<DocumentationFile>absolutePathTo\assemblyName.xml</DocumentationFile>
</PropertyGroup>
IntelliSense (VS2019 16.9.0) 识别文档并正确显示它,即使在同一解决方案下的其他项目中也是如此。
当我生成 NuGet 包时,它会在项目的 bin\Debug 文件夹中创建。如果我将其作为 zip 存档打开,则可以在具有匹配名称的 lib\netstandard2.1 文件夹中找到 DLL 和文档 XML。
一旦我将这个包从私有 NuGet 服务器安装到另一个项目,它就可以正常工作,但会丢失完整的文档。 IntelliSense 不再显示我的评论,程序集元数据似乎也没有。
有人可以支持我吗?
这很正常。对于 xml 文档,它在 new-sdk 样式项目下是特殊的。 xml文件只能复制到非sdk net framework项目中,new-sdk net core项目不可以。
所以您应该另外尝试这些步骤以获得您想要的:
1) 在你的 nuget 项目的 csproj
文件下输入这些节点。
<ItemGroup>
<None Include="xxx\absolutePathTo\assemblyName.xml"(the path of the xml file under your project folder) Pack="true">
<PackageCopyToOutput>true</PackageCopyToOutput>
</None>
</ItemGroup>
2) 之后,重新打包您的 nuget 项目,在安装新版本之前,请 clean nuget caches first 或删除 [=12= 下的所有文件]
就个人而言,我让 Visual Studio 为我处理事情。 如果您 right-click 在项目中,并选择 Properties, 在 Build -> Output 区域,您应该会在 Documentation file 下看到一个复选框,标签为 Generate a file containing API 文档。。 勾选此项时,下方会出现一个新选项:XML 文档文件路径。但是文件选择器被标记为 Optional path for the API documentation file。留空以使用默认位置。.
仅供参考:默认位置在构建项目时生成的 EXE/DLL 旁边。
当您下次构建代码时(对于其他阅读者,我假设您已经在 Package[=26] 中的 Generate NuGet package on build =] 区域也被选中)它还会将 XML 文档打包到生成的 NuGet 包中。
从这个新包的用户的角度来看,Visual Studio 会选择里面的 XML 文档。