我在同一文件夹中有两个exe文件,我可以从exe1中的一个按钮运行exe2。今天,我通过一个远程(终端服务)会话观察一个客户,并且exe2未能运行“找不到文件”错误,但是当我们检查时exe1位于同一目录中。所以我应该使用AppDomain.CurrentDomain.BaseDirectory或System.Environment.CurrentDirectory吗?
谢谢
我在同一文件夹中有两个exe文件,我可以从exe1中的一个按钮运行exe2。今天,我通过一个远程(终端服务)会话观察一个客户,并且exe2未能运行“找不到文件”错误,但是当我们检查时exe1位于同一目录中。所以我应该使用AppDomain.CurrentDomain.BaseDirectory或System.Environment.CurrentDirectory吗?
谢谢
string.GetFullPath(path)
使用Environment.CurrentDirectory
而不是来加我的两分钱,这CurrentDomain.BaseDirectory
让我感到惊讶。
Answers:
AppDomain.CurrentDomain.BaseDirectory
返回从中加载当前应用程序域的目录。
System.Environment.CurrentDirectory
返回当前系统目录。
您的情况AppDomain.CurrentDomain.BaseDirectory
是最好的解决方案。
您应该使用AppDomain.CurrentDomain.BaseDirectory
。
例如,在Windows Services应用程序中:
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;
在Visual Studio 2010测试项目中,如果启用“编辑测试设置”的部署选项,则AppDomain.CurrentDomain.BaseDirectory指向TestResults \ Out文件夹(而不是bin \ debug)。虽然,默认设置指向bin \ debug文件夹。
在这里,我找到了令人信服的答案。
为什么AppDomain.CurrentDomain.BaseDirectory在asp.net应用程序中不包含“ bin”?
几天前,我也一直在使用
Environment.CurrentDirectory
因为它在生产服务器上给我带来了问题,但在我的本地服务器上工作正常,
所以,我尝试了
System.AppDomain.CurrentDomain.BaseDirectory;
它在两个环境中都对我有效。
因此,正如所有人都说过的那样,我们应该始终与
System.AppDomain.CurrentDomain.BaseDirectory;
因为它会检查“当前域”目录中的路径。
看更多信息