C#.NET中的Environment.CurrentDirectory

时间:2009-08-24 10:40:35

标签: c#-3.0

属性Environment.CurrentDirectory始终返回系统目录的路径,而不是我的应用程序目录。在我同事的PC中,它返回应用程序目录。

有什么问题?我该如何解决?

以下代码适用于我

ePCRSettings = XMLParser.XmlParser.Deserialize<PCRGeneratorSettings>(string.Format("{0}\\ePCRPDFSettings.xml", AppDomain.CurrentDomain.BaseDirectory));

AppDomain.CurrentDomain.BaseDirectory - Returns the directory E:\MyApplications\.

以下代码对我不起作用

ePCRSettings = XMLParser.XmlParser.Deserialize<PCRGeneratorSettings>(string.Format("{0}\\ePCRPDFSettings.xml", Environment.CurrentDirectory));

Environment.CurrentDirectory - Returns c:\windows\system32.

此.dll文件可用于VB 6和ASP.NET应用程序

4 个答案:

答案 0 :(得分:11)

设置当前目录

Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory); //or set executing Assembly location path in param

Environment.CurrentDirectory //now returns your app path

答案 1 :(得分:5)

使用

System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly()位置。);

答案 2 :(得分:3)

您不应将Environment.CurrentDirectory值用作文件查找的基础,因为它可能会更改,并且可能并不总是在您的控制之下。例如文件另存为另一个文件夹可能会更改“当前文件夹”值。正如您所看到的,它可能会产生不可预测的结果。

使用您可以更好地控制的值。例如安装应用程序时更新的配置(xml?)文件中的ResourcesFolderPath值。

答案 3 :(得分:1)

我怀疑这可能与应用程序运行的当前用户ID有关,例如,如果您在用户会话中运行应用程序(例如,在VS中调试),那么这可能会返回您当前的目录,但如果您在IIS下运行它,那么这可能是它默认为系统文件夹的原因吗?