0

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

该文件名为 log4Net.config,我已将其添加到我的项目中。我已将属性设置为 build action = 'Content' 和 copy 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 作为参数。

难道我做错了什么。

非常感谢您的任何建议,

史蒂夫

4

4 回答 4

4

您必须指向项目的根目录。FileInfo 指向操作系统的根目录,而不是 exe 的根目录。所以你应该像这样更改代码:

FileInfo logfileInfo = new FileInfo(Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase) + @"\Log4Net.config");
于 2009-06-09T10:36:32.500 回答
1

当程序没有访问文件的安全权限时,也会抛出未找到文件异常,所以可能是这样吗?

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

于 2009-06-09T10:13:14.433 回答
1

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

于 2009-06-09T10:24:36.283 回答
0
 string logIOFilePath = 
                Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase), 
                "Log4Net.config");
于 2009-06-09T10:37:24.290 回答