Winforms System.IO.FileNotFoundException正在调试中,但未使用exe

Winforms System.IO.FileNotFoundException正在调试中,但未使用exe,winforms,visual-studio,debugging,ioexception,image-load,Winforms,Visual Studio,Debugging,Ioexception,Image Load,我会尽量简单快速 我正在开发一个程序,实际上是一个windows窗体。 我有一个pictureBox,在下面的一行中,当我在调试模式下运行时(请注意),我得到一个System.IO.FileNotFoundException异常: pictureBox1->Image = Image::FromFile(".\\images\\no-avatar2.jpg"); 问题是,当我运行exe文件并且文件完全加载时,我没有得到该异常。 你知道为什么会这样吗?我用这个: pictureBox1-&

我会尽量简单快速

我正在开发一个程序,实际上是一个windows窗体。 我有一个pictureBox,在下面的一行中,当我在调试模式下运行时(请注意),我得到一个System.IO.FileNotFoundException异常:

pictureBox1->Image = Image::FromFile(".\\images\\no-avatar2.jpg");
问题是,当我运行exe文件并且文件完全加载时,我没有得到该异常。 你知道为什么会这样吗?

我用这个:

pictureBox1->Image = Image::FromFile(System::IO::Path::GetDirectoryName(System::Reflection::Assembly:‌:GetEntryAssembly()->Location) + "\\images\\no-avatar2.jpg");

而且它工作正常

始终使用文件的完整路径,当Environment.CurrentDirectory发生更改或有人用错误的工作目录启动程序时,您会遇到麻烦。从Assembly.GetEntryAssembly().Location创建完整路径。抱歉,我没有得到。“始终使用完整路径”?所以,我不能再使用相对路径了?我希望它能在用户选择安装程序的任何目录下工作。我觉得这不是个好主意。你能再解释一下吗?这就是为什么你必须使用Assembly.GetEntryAssembly().Location,它告诉你程序的安装位置。我明白了。但这将返回包含文件名和我的exe扩展名的完整路径。我想要一个快速的解决方案,如下所示:pictureBox1->Image=Image::FromFile(Assembly.GetEntryAssembly().Location+“\\images\\no-avatar2.jpg”);使用System.IO.Path.GetDirectory()方法。并使用Path.Combine()可靠地创建新的路径字符串。你急于寻找“快速解决方案”并不能帮助你找到合适的解决方案。