2013-05-27 77 views
2

我使用Sandcastle幫助文件生成器生成CHM文件,該文件基於csproj文件。什麼我最終想要做的,就是找到CHM文件每個主題的TopicID,並與Excel-DNA使用它們像這樣:如何從CHM文件獲取TopicIDs?

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

儘管我知道在文章的所有網址CHM文件 - 我可以使用7zip和HTML幫助工作室(HHW)查看內容 - 我不知道如何使用Sandcastle或HHW將主題映射到某些ID或查找我已經擁有的主題的ID有。

有什麼想法?

乾杯,

克里斯托

---- ---- UPDATE

我繼續創建了一個Doxygen的CHM文件,並手動添加[MAP]和[別名] HTML Help Workshop中的HPP文件中的字段。我已經將特定的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文件。

有什麼想法?

回答

1

從我已經意識到,似乎並沒有一個簡單的方法來做到這一點自動。最好的折衷方案是花時間和努力,創建一個地圖/別名文件來進行重新映射。通過使用SHFB創建的輸出作爲臨時副產品,您可以注入一個自定義的HHP文件,其中包含每個HTML文件的所有映射和別名。然後,這只是一個與所述HHP文件再次編譯一切的問題。當新的UDF功能添加到Excel前端並通過Excel-Dna公開時,需要將手動條目添加到HHP文件中。對於有少數UDF的項目,我認爲自動創建HHP文件是不值得的。但是,如果你正在處理1000個UDF,你最好創建一個C#項目來自動生成這個文件。 創建一個新的UDF功能,所以當以下行需要被添加到HHP文件:

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 
... 

映射的姓名必須與別名assignement,而這又需要指向一個文件已經添加到[Files]部分。

我希望這在某種程度上有用。