为什么显示帮助文件(chm)的功能突然停止工作?

时间:2014-06-17 19:02:51

标签: c# vsto chm

我在用C#编写的Outlook中有一个VSTO插件,它有一个显示chm帮助文件的按钮,该文件已经运行了几年,然后突然停止工作。当我单击运行以下代码的按钮时,没有任何反应,

try
{
    string path = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase), "ema.chm");

    // Show the help.
    Help.ShowHelp(null, path);
}
catch (System.Exception ex)
{
    MessageBox.Show(ex.Message);
} 

有没有人有什么想法可能导致这样的问题?

2 个答案:

答案 0 :(得分:1)

我发现了两个潜在的问题。

1)您构建path的方式并不可靠 有many ways to get a path,它们并非都是平等的。 例如,GetCallingAssembly is susceptible to JIT inlining可能会产生不同的结果 但我相信汉斯已经暗示了真正的问题 尝试使用不同的方式来构建您的路径。 例如,this way

以下是我通常使用属性获取程序集目录中文件路径的方法示例:

    private string myXMLFile()
    {
        string ExecutingPath = AppDomain.CurrentDomain.BaseDirectory;
        return ExecutingPath + "MyFile.XML";
    }

然后很容易就像这样使用它:

if (File.Exists(myXMLFile) == false) { CreateNewXMLFile(); }
XDocument Xdoc = XDocument.Load(myXMLFile);
...
Xdoc.Save(myXMLFile);

2)。出于“安全”原因,Windows可能会阻止.CHM格式 然而,它可以被解除阻塞,这导致它在某些系统上工作而在其他系统上不工作 见Windows 8 64bit can't open chm files

答案 1 :(得分:0)

如果真的没有改变,多年来工作hh.dat可能会导致错误。

hh.dat文件存储系统上所有HTMLHelp文件(* .CHM)的用户特定信息(位置,喜欢的主题,搜索历史等),如果它以某种方式被破坏,可能会导致错误

删除或重命名文件hh.dat,将系统上的所有(!)CHM窗口重置为默认设置。当您下次打开任何.chm文件时,Windows将创建新版本的hh.dat。你应该在hh.dat找到:

Windows XP:\ Documents and Settings \%username%\ Application Data \ Microsoft \ HTML Help

Windows 7:\ Users \%username%\ AppData \ Roaming \ Microsoft \ HTML Help