FileInfo紧凑框架3.5 - 无法找到文件

时间:2009-06-09 10:08:58

标签: c# compact-framework fileinfo

我正在使用FileInfo类。但是,文件信息找不到该文件。

该文件名为log4Net.config,我已将其添加到我的项目中。我已将属性设置为构建action ='Content'并复制output ='copy always'

当我运行以下代码时:

 FileInfo logfileInfo = new FileInfo("Log4Net.config");

 if (!logfileInfo.Exists)
 {
     Console.WriteLine("Cannot find file: " + logfileInfo.FullName);
     return; 
 }
 else
 {
     XmlConfigurator.Configure(logfileInfo);
 }

存在总是假的。例外是:找不到文件'Log4Net.config'。

我已经检查了我的PDA并且Log4Net.config已被复制到PDA并且与可执行文件位于同一目录中。所以不确定为什么它找不到它。

只需要一些额外的信息,configure方法需要FileInfo作为参数。

我做错了什么。

非常感谢任何建议,

史蒂夫

6 个答案:

答案 0 :(得分:4)

您必须指向项目的根目录。 FileInfo指向OS的根,而不是exe的根。所以你应该改变这样的代码:

FileInfo logfileInfo = new FileInfo(Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase) + @"\Log4Net.config");

答案 1 :(得分:1)

当程序没有访问该文件的安全权限时,也会抛出文件未找到异常,那么可能是这种情况呢?

顺便说一句,你的帖子中有一个矛盾:首先你说这个文件名为“logPDA.config”,然后它突然被称为“Log4Net.config”。只是为了确保,文件的名称总是一样吗?

答案 2 :(得分:1)

Windows Mobile与Linux一样,不使用当前目录的概念。所以你需要做的是: How do you get the current directory in compact framework?

答案 3 :(得分:1)

我只能建议您仔细检查Directory.GetCurrentDirectory()的值。

更新:上面可能无法正常工作 - 请另外一张海报说,How do you get the current directory in compact framework?

答案 4 :(得分:1)

您假设程序文件夹是当前目录。 Afaik并非如此。您可以从System.IO.Directory.GetCurrentDirectory()

开始进行调查

答案 5 :(得分:0)

 string logIOFilePath = 
                Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase), 
                "Log4Net.config");