System.IO.FileNotFoundException
ファイルまたはアセンブリが見つからない場合に発生するC#の例外
概要
System.IO.FileNotFoundExceptionは、指定されたパスにファイルが存在しない場合や、必要なDLL/アセンブリが見つからない場合に発生します。ファイルパスの問題だけでなく、依存関係の問題でも発生する点に注意が必要です。
エラーメッセージ
System.IO.FileNotFoundException: Could not find file 'C:\app\data\config.json'.
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access)
System.IO.FileNotFoundException: Could not load file or assembly 'Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'. The system cannot find the file specified.
原因
- ファイルパスの誤り: パスのタイプミス、相対パスと絶対パスの混同
- 作業ディレクトリの違い: 開発環境と実行環境で作業ディレクトリが異なる
- DLLの不足: NuGetパッケージの復元漏れ、ビルド出力にDLLが含まれていない
- アセンブリバージョンの不一致: バインディングリダイレクトの設定漏れ
- ファイルのコピー設定漏れ: ビルド時にファイルが出力ディレクトリにコピーされていない
解決策
1. File.Existsで事前チェックする
| |
2. 実行ディレクトリを基準にパスを構築する
| |
3. ビルドアクションとコピー設定を確認する
| |
| |
4. アセンブリバインディング問題を診断する
| |
| |
5. NuGetパッケージの復元と依存関係の確認
| |
| |
関連エラー
- NullReferenceException - null参照アクセスで発生
- InvalidOperationException - 無効な操作で発生
C# の他のエラー
この記事は役に立ちましたか?