【问题标题】:How to generate documentation using Sandcastle NuGet package (EWSoftware.SHFB)?如何使用 Sandcastle NuGet 包 (EWSoftware.SHFB) 生成文档?
【发布时间】:2015-11-12 09:41:10
【问题描述】:

我正在尝试使用 Visual Studio (EWSoftware.SHFB) 中 Sandcastle 的 NuGet 包为我的 C# 代码生成网站文档。事实是我不知道如何使用它。我从 NuGet 包管理器安装它,然后我不知道如何处理它。

我可以使用默认安装程序安装的 VS Sandcaslte 扩展来编辑我的文档项目并生成相应的网站。

感谢您的帮助。

【问题讨论】:

标签: c# visual-studio nuget sandcastle


【解决方案1】:

假设您已经有了一个项目解决方案,请将“文档”类型的新项目添加到您的解决方案中。

右键单击 Documentation Sources 并通过选择要记录的 csproj 添加源。

然后构建。

【讨论】:

  • 我希望没有安装 Sandcatle 组件的用户能够生成文档。
  • 什么软件会在那种情况下生成该文档?
  • github.com/EWSoftware/SHFB/blob/master/NuGet/ReadMe.txt 所述,NuGet 包应该提供这样的功能。
  • 我可能是错的,因为我从来没有这样做过,但是据我从自述文件中了解到,NuGet 包提供了相同的功能(称为 Sandcastle 帮助文件生成器),但它是通过 NuGet 安装的运行 sandcastle.msi。
  • 我已经从 Windows 卸载程序卸载了 Sandcastle,我已经从 VS 卸载了 VS Sandcastle 扩展,我已经从 VS 下载了 NuGet 包。行为不一样...
【解决方案2】:

MsBuild.exe MyDocumentationProject.shfbproj 生成了文档。就是说这个项目不能通过VS编辑,但是可以用命令行生成。

之前,如https://github.com/EWSoftware/SHFB/blob/master/NuGet/ReadMe.txt 所述:

  1. ComponentPath 属性必须在 MyDocumentationProject.shfbproj 中设置,以提供有关您正在使用的框架的反射信息。

    <PropertyGroup>
      <ComponentPath>$(MSBuildThisFileDirectory)..\packages\EWSoftware.SHFB.NETFramework.4.6</ComponentPath>
    </PropertyGroup>
    
  2. SHFB 环境变量必须在MyDocumentationProject.shfbproj 中有条件地设置。

    <PropertyGroup>
      <SHFBROOT Condition=" '$(SHFBROOT)' == '' ">$(MSBuildThisFileDirectory)..\packages\EWSoftware.SHFB.2015.10.10.0\Tools\</SHFBROOT>
    </PropertyGroup>
    

【讨论】:

  • 添加这些属性后项目是如何构建的?我有一个 .NET 库项目,其中包含了这些 EWSoftware.SHFB nuget 包,但是在构建这个项目时没有生成帮助文件。
  • 只是有同样的问题,但是问题是重复的,别忘了删除它。
【解决方案3】:

我在安装 Sandcastle 后使用 Visual Studio 插件创建了文档项目。

成功完成后,我在另一个项目上添加了以下构建后事件:

IF "$(ConfigurationName)"=="Debug" Goto Exit

ECHO Building SHFB help file via MSBuild
"$(SystemRoot)\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe"  /p:CleanIntermediates=True /p:Configuration=Release "$(SolutionDir)Documentation\Documentation.shfbproj"

:Exit

项目文档文件中的 SHFB 环境变量如下所示:

<!-- NOTE: Update the version number in the path (YYYY.M.D.R) to match the package version -->
<SHFBROOT Condition=" '$(SHFBROOT)' == '' ">$(MSBuildThisFileDirectory)..\packages\EWSoftware.SHFB.2016.9.17.0\tools\</SHFBROOT>

如果系统上未安装 Sandcastle,它将使用 NuGet 包中的可执行文件。确保版本与其他版本匹配。

这些文档链接可能有助于解决我忘记的问题:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-04
    • 1970-01-01
    • 2010-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-01
    相关资源
    最近更新 更多