我应该使用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;
据我所知,你应该使用BaseDirectory
。 CurrentDirectory
可以在程序执行过程中改变。
在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错误的一部分
- C ++:安全使用longjmp和setjmp?
- 当.NET抛出WebException((400)Bad Request)时如何处理WebResponse?
- 在Python中的调用者线程中捕获一个线程的exception
- 为什么NotImplementedException存在?
- 我应该在Python中对不良/非法参数组合提出哪个exception?
- 差异:std :: runtime_error vs std :: exception()
- 如果catch和finally块都抛出exception,会发生什么?
- 在.NET中对于无效或意外的参数应该抛出什么exception?
- SemaphoreFullException通过ASP.NET成员资格检查用户angular色时