使用 Sandcastles 在 CHM 帮助文件中嵌入图像
Posted
技术标签:
【中文标题】使用 Sandcastles 在 CHM 帮助文件中嵌入图像【英文标题】:Embedding images in CHM help file with Sandcastles 【发布时间】:2014-11-18 18:34:25 【问题描述】:我正在使用 Sandcastles 为我的项目生成 CHM 帮助文件。我想要一个可以分发的独立 CHM 文件,最好是单独分发。
我遇到的问题是,要嵌入图像,似乎该图像需要与 CHM 文件分开存在于用户系统上。当我查看我的 CHM 文件的源代码时,它看起来像:
<img src="C:\Users\me\Pictures\wave.jpg" />
因此,如果我将我的 CHM 文件通过电子邮件发送给某人,而他们没有此图像,它将失败。另一种方法是:
<img src="images/wave.jpg" />
然后通过电子邮件向此人发送包含我的 CHM 文件和图像文件夹的 ZIP。在我看来,这也不是一个很好的解决方案。
有没有办法在 CHM 文件中“嵌入”图像?还是有一个干净的解决方案?
为了记录,我通过这个 XML 代码在我的 C# 项目中包含这个图像。
/// <summary>
/// Lorem ipsum dolor sit amet, consectetur adipiscing elit.
/// Pellentesque quis tortor sit amet magna posuere sagittis.
/// Integer aliquet nibh elit, ut porta ex laoreet et
/// </summary>
/// /// <remarks>A picture: <br />
/// <img src "C:\Users\me\Pictures\wave.jpg" />
/// </remarks>
【问题讨论】:
次要挑剔:将 C# 代码标记添加到代码块中可能是个好主意,以便 XML 语法突出显示工作。 【参考方案1】:这只是一个 Visual Basic 示例,但我认为 C# 就在附近。我假设您使用的是 sandcastle Help File Builder (SHFB)。
如果图像没有在 MAML 主题中使用,只需将 SHFB 项目中的 BuildAction 设置为 Content 并将它们放在图像文件夹中。它们会自动复制到工作文件夹并编译到 CHM 帮助文件中。
将 [images] 文件夹导入 SHFB 项目资源管理器的步骤,MAML 主题未引用:
-
从树上下文菜单中选择添加和现有文件夹...,选择 [图像]-文件夹
对于每个图像文件,将 BuildAction 从图像设置为内容
在 SHFB 中,按下构建帮助文件按钮
构建完成后,您将获得一个带有图像的 CHM 帮助文件。
我附上了一些 Visual Basic 项目、SHFB 和生成的 CHM 的快照。
【讨论】:
感谢 BuildAction = Content 提示。大多数参考资料建议将其设置为“Image”并将 CopyToMedia 属性设置为“true”应该部署图像文件并使其甚至可用于非 MAML 主题。但是,这对我不起作用,而“内容”却可以。以上是关于使用 Sandcastles 在 CHM 帮助文件中嵌入图像的主要内容,如果未能解决你的问题,请参考以下文章