属性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应用程序
答案 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下运行它,那么这可能是它默认为系统文件夹的原因吗?