3

我正在使用 Sandcastle Help File Builder 基于csproj文件生成 CHM文件。我最终想要做的是在 CHM 文件中找到每个主题的 TopicID,并将它们与 Excel-Dna 一起使用,如下所示:

...
[ExcelFunction(Category = "MyCategory", Name = "MyUDF", HelpTopic="MyHelp.chm!102")]
...

即使我知道 CHM 文件中文章的所有 URL——我可以使用 7zip 和 HTML Help Workshop (HHW) 查看内容——我不知道如何使用 Sandcastle 或 HHW 将主题映射到某些 id或找出我已经拥有的主题的 ID。

有什么想法吗?

干杯,

克里斯托斯

- - 更新 - -

我继续使用 Doxygen 创建了一个 CHM 文件,并在 HTML Help Workshop 的 HPP 文件中手动添加了 [MAP] 和 [ALIAS] 字段。我已经将特定的 html 映射到数字 1000,所以现在当我使用“MyHelp.chm!1000”时,它实际上会在 chm 文件中打开正确的 html。因此,我认为 Sandcastle 没有为 Excel-Dna 使用映射和别名是一个问题。我不想这样做,因为我计划将其添加为我们使用的 TFS 上的构建事件。你觉得还有别的办法吗?

我试过这样做:

MyHelp.chm!html\filename_of_generated_html
MyHelp.chm!html\filename_of_generated_html.html
MyHelp.chm!html\\filename_of_generated_html
MyHelp.chm!html.filename_of_generated_html

但他们似乎都无法指向 CHM 文件。

有什么想法吗?

4

1 回答 1

1

据我所知,似乎没有一种简单的方法可以自动执行此操作。投入时间和精力的最佳折衷方案是创建一个映射/别名文件来进行重新映射。通过使用 SHFB 作为临时副产品创建的输出,您可以注入一个定制的 HHP 文件,其中包括每个 HTML 文件的所有映射和别名。然后,只需使用所述 HHP 文件再次编译所有内容即可。当一个新的 UDF 函数添加到 Excel 前端并通过 Excel-Dna 公开时,需要将手动条目添加到 HHP 文件中。对于一个有几个 UDF 的项目,我认为自动创建 HHP 文件是不值得的。但是,如果您正在处理 1000 个 UDF,您最好创建一个 C# 项目来自动生成此文件。

 For example if you've created the UDF function MyFunction(...), then its Excel-Dna attribute
 will be: 
 [ExcelFunction(IsThreadSafe = true, Category = Defines.ExcelCategory, Name = "MyFunction", Description = "My function's description", HelpTopic = "Help_Manual.chm!XXXX")]

 Then you'll need to add the following lines in the HHP file:

 [FILES]
 ...
 html\M_ExcelWrapper_QDAExcelUDFs_MyFunction.htm
 ...    


 [ALIAS]
 ...
 MYFUNCTION=html\M_ExcelWrapper_ExcelUDFs_MyFunction.htm
 ...     


 [MAP]
 ...
 #DEFINE MYFUNCTION                     XXXX
 ...

映射的名称需要与别名分配匹配,而别名分配又需要指向已添加到 [Files] 部分的文件。

我希望这在某种程度上有用。

于 2013-08-06T09:05:01.250 回答