C# System.IO.Path.Combine(Environment.CurrentDirectory)将我带到错误的路径

C# System.IO.Path.Combine(Environment.CurrentDirectory)将我带到错误的路径,c#,path,directory,C#,Path,Directory,我正在加载这个文件,它位于我创建的文件夹中,同一个文件夹也呈现在bin/debug文件夹中,但我需要在我创建的文件夹中找到该文件,问题是应该通过名称查找文件路径的方法为我提供了调试文件夹的路径,而不是我创建的 我已经对路径进行了编码,告诉你真正的位置 var path2 = System.IO.Path.Combine(Environment.CurrentDirectory, "xulrunner"); var hardcodedPath= "C:\\Users\\Alan\\Desktop

我正在加载这个文件,它位于我创建的文件夹中,同一个文件夹也呈现在bin/debug文件夹中,但我需要在我创建的文件夹中找到该文件,问题是应该通过名称查找文件路径的方法为我提供了调试文件夹的路径,而不是我创建的

我已经对路径进行了编码,告诉你真正的位置

var path2 = System.IO.Path.Combine(Environment.CurrentDirectory, "xulrunner");

var hardcodedPath= "C:\\Users\\Alan\\Desktop\\TabControl\\TabControl\\TabControl\\TabControl\\xulrunner";
这是path2变量的结果:

C:\\Users\\Alan\\Desktop\\TabControl\\TabControl\\TabControl\\TabControl\\bin\\Debug\\xulrunner"

正如您所看到的,它指向不同的文件夹作为硬编码路径。

从Visual Studio运行时,工作目录与项目位置不同,通常是向上两个文件夹(从
bin\Debug\
)。在分布式应用程序中,工作目录可能与要访问的其他文件的目录相同,因为您将一些其他文件复制到工作目录

我建议您保持代码不变,并将您需要的文件从项目复制到输出目录。只需将
Copy to Output Directory
设置为
Copy always
Copy if newer
,即可完成此操作


更改向上移动两个文件夹的路径是一个坏主意,因为这在生产场景中是不正确的,因此会破坏您的代码。

要准确获取您要查找的内容,可以执行以下操作:

    var path2 = System.IO.Path.GetFullPath(System.IO.Path.Combine(Environment.CurrentDirectory, "..\\..\\xulrunner"));
但是,请注意Environment.CurrentDirectory可能会随着程序的运行而更改。我发现使用%PROGRAMDATA%环境变量可以很好地创建保存数据的位置。它为使用路径提供了更一致的解决方案

此外,提供的代码片段只有在运行IDE的调试器时才真正有用。当您部署时,它可能不会提供您所期望的


这将有助于了解您希望的总体功能结果。

但是您的
.exe
不在
bin\Debug
文件夹下?正确,xulrunner文件存在于bin/Debug文件夹中,但我需要返回路径的方法,就像调试文件夹中的xulrunner的硬代码路径一样。我不确定我是否理解,是否有一种方法可以将我指向这条路径?var hardcodedPath=“C:\\Users\\Alan\\Desktop\\TabControl\\TabControl\\TabControl\\TabControl\\TabControl\\xulrunner”;当然,这部分C:\\Users\\Alan\\Desktop是无用的。不,你为什么要这样做?