2009-06-09 54 views
0

我正在使用FileInfo類。但是,文件信息找不到該文件。FileInfo緊湊框架3.5 - 找不到文件

該文件被稱爲log4Net.config,我已將它添加到我的項目。我已經設定的屬性建立行動=「內容」,並複製輸出=「複製總是」

當我運行下面的代碼:

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,並且與可執行文件在同一目錄中。所以不知道爲什麼找不到它。

只是一些額外的信息,配置方法需要一個FileInfo作爲參數。

我做錯了什麼。

非常感謝任何建議,

史蒂夫

回答

4

您必須指向項目的根目錄。 FileInfo指向OS的根,而不是該exe的根。所以,你應該改變這樣的代碼:

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

的文件未發現異常,也會引發當程序不具備安全權限訪問該文件,因此,或許是這樣的話?

順便說一句,你的帖子中有一個矛盾:首先你說這個文件被稱爲「logPDA.config」,然後它突然被稱爲「Log4Net.config」。只是爲了確認,該文件是否始終命名相同?

+0

這是相同的名稱。這只是我的文章中的錯誤。我現在糾正了。 – ant2009 2009-06-09 10:21:18

1

您假定程序文件夾是當前目錄。 Afaik並非如此。您可以從System.IO.Directory.GetCurrentDirectory()開始調查

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