2009-06-09 11 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にコピーされており、実行可能ファイルと同じディレクトリにあります。なぜそれが見つからないのか分かりません。

ほんのちょっとした情報で、configureメソッドはFileInfoをパラメータとして想定しています。

私は何か間違っていますか?何かアドバイスのため

多くのおかげで、

答えて

4

プロジェクトのルートを指す必要があります。 FileInfoは、exeのルートではなく、OSのルートを指します。だから、このようなコードを変更する必要があります。

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

スティーブ・ファイルは、プログラムがファイルにアクセスするためのセキュリティ権限を持っていないときに例外もスローされますので、おそらくそれはケースだが見つかりませんか?

btw、あなたの投稿に矛盾があります:最初にファイルが "logPDA.config"と呼ばれていたら、それは突然 "Log4Net.config"と呼ばれます。確かに、ファイルの名前は常に同じですか?

+0

それは同じ名前です。それは私の記事の間違いです。私は今修正しました。 – ant2009

1

プログラムフォルダが現在のディレクトリであると仮定しています。 Afaikはそうではありません。 System.IO.Directory.GetCurrentDirectory()で始まるファイルを調べることができます

0
string logIOFilePath = 
       Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase), 
       "Log4Net.config"); 
関連する問題