我已将.chm文件添加到我的应用程序根目录。当我使用下面的代码获取文件时,它引用了bin / release / somehting.chm的路径
System.Windows.Forms.Help.ShowHelp(this, Application.StartupPath+"\\"+"somehting.chm");
我想获得相对于应用程序安装位置的路径。请帮忙。
部署应用程序后,未加载添加到根目录的chm文件。它在Visual Studio中进行调试时甚至没有加载,也没有出现任何错误。
答案 0 :(得分:1)
你需要:
String exeDirectory = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);
所以:
String HelpFilepath = "file://" + Path.Combine(exeDirectory , "somehting.chm");
Help.ShowHelp(this, path);
答案 1 :(得分:1)
正如我所看到的那样,调用Help.ShowHelp
的问题中的第一个代码段并不是很糟糕。有时我会使用下面的相关代码。许多解决方案是可能的
请注意,拼写错误,例如somehting.chm在代码片段中令人不安。
private const string sHTMLHelpFileName = "CHM-example.chm";
...
private void button1_Click(object sender, EventArgs e) {
System.Windows.Forms.Help.ShowHelp(this, Application.StartupPath + @"\" + sHTMLHelpFileName);
}
因此,请打开Visual Studio - Solution Explorer并检查CHM文件的属性。转到下面快照中显示的下拉框并设置"始终复制" (这里只有德国人)。以Debug
模式启动项目并检查bin / debug输出文件夹。对Release
模式和输出文件夹执行相同操作。 CHM应该驻留在那里,我希望您的CHM呼叫有效。
答案 2 :(得分:0)
来自类似topic的答案是:
// get full path to your startup EXE
string exeFile = (new System.Uri(Assembly.GetEntryAssembly().CodeBase)).AbsolutePath;
// get directory of your EXE file
string exeDir = Path.GetDirectoryName(exeFile);
// and open Help
System.Windows.Forms.Help.ShowHelp(this, exeDir+"\\"+"somehting.chm");