我用它从Resources
//string myFile = "C:\\Users\\...\\Resources\\html_file.html"; // this works
var myFile = Path.GetFullPath("html_file.html"); // this doesn't works
//myFile = myFile.ToString();
//myFile = myFile.Replace(@"\", @"\\");
//MessageBox.Show(myFile);
try
{
Process.Start(myFile);
}
catch (Win32Exception noBrowser)
{
if (noBrowser.ErrorCode == -2147467259)
MessageBox.Show(noBrowser.Message);
}
catch (System.Exception other)
{
MessageBox.Show(other.Message);
}
有人可以告诉我出了什么问题吗?
编辑:这有效
Build Action = Embedded Resource
和Copy to Output Directory = Copy always
string myFile = @".\Resources\html_file.html";
但我仍然需要在文件中包含路径Resources
。有没有办法在我的.EXE
文件中包含'html_file'?
答案 0 :(得分:4)
很明显它无法在当前目录中找到该文件。确保以下内容正确无误:
该文件包含在您的项目中,其Copy to Output Directory
属性设置为Copy always
或Copy if newer
。
使用Application.StartupPath
确保您指向正确的目录,因此第一行将成为:
代码:
var myFile = Path.Combine(Application.StartupPath, "html_file.html");
答案 1 :(得分:1)
在第一种方法中,您可以指定文件的确切路径 在第二个中,您要求框架创建一个完整路径。 框架需要从某个地方开始,它选择从当前目录开始,但文件不存在