我应该使用AppDomain.CurrentDomain.BaseDirectory或System.Environment.CurrentDirectory吗?

我在同一个文件夹中有两个exe文件,我可以从exe1中的一个button运行exe2。 今天,我正在通过远程(terminal服务)会话观察客户,exe2未能运行“文件未find”错误,但exe1在我们检查时在同一目录中。 所以我应该使用AppDomain.CurrentDomain.BaseDirectory或System.Environment.CurrentDirectory ?

谢谢

如果你想find与你的应用程序在同一目录中的文件, AppDomain.CurrentDomain.BaseDirectory是正确的select。

Environment.CurrentDirectory是一个值,可以并将改变通过运行您的应用程序的过程。 例如,使用默认参数,WinForms中的OpenFileDialog会将此值更改为从中select文件的目录。

AppDomain.CurrentDomain.BaseDirectory返回当前应用程序域加载的目录。 System.Environment.CurrentDirectory返回当前的系统目录。 在你的情况下,AppDomain.CurrentDomain.BaseDirectory是最好的解决scheme。

你应该使用AppDomain.CurrentDomain.BaseDirectory

例如在一个Windows服务应用程序中:

System.Environment.CurrentDirectory将返回C:\ Windows \ system32

AppDomain.CurrentDomain.BaseDirectory将返回[Application.exe位置]

另一个要注意的重要因素是AppDomain.CurrentDomain.BaseDirectory是一个只读属性,而Environment.CurrentDirectory可以是其他东西,如果有必要:

 // Change the directory to AppDomain.CurrentDomain.BaseDirectory Environment.CurrentDirectory = AppDomain.CurrentDomain.BaseDirectory; 

据我所知,你应该使用BaseDirectoryCurrentDirectory可以在程序执行过程中改变。

在Visual Studio 2010testing项目中,如果启用编辑testing设置的部署选项,则AppDomain.CurrentDomain.BaseDirectory指向TestResults \ Out文件夹(而不是bin \ debug)。 虽然,默认设置指向bin \ debug文件夹。

在这里我find了令人信服的答案

为什么AppDomain.CurrentDomain.BaseDirectory在asp.net应用程序中不包含“bin”?

我通常使用像这样的东西:

  string AppPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase); AppPath = AppPath.Replace("file:\\", ""); 

就像我使用的那样,我也经历了这几天

 Environment.CurrentDirectory 

因为它是在生产服务器上给我的问题,但与我的本地服务器正常工作,

所以,我尝试了

 System.AppDomain.CurrentDomain.BaseDirectory; 

它在两个环境中都适合我。

所以,他们都说过,我们应该一直跟着

 System.AppDomain.CurrentDomain.BaseDirectory; 

因为它检查path的当前域目录。

寻找更多的信息

在服务器上找不到path错误的一部分