この記事は公開から4年以上経過しています。
VSCode上での.NETCore開発で、デバッグ時に意図したカレントディレクトリが取得できないときの対応。
問題
VisualStudioCodeのC#拡張でデバッグを行なったとき、Directory.GetCurrentDirectory()
が実行ファイルのディレクトリを返さない。
原因
VisualStudioCodeのC#拡張では、デバッグ時の既定のワーキングディレクトリ設定が実行ファイルディレクトリではないため。
対応
.vscode
配下のlaunch.json
をテキストエディタで開き、configurations
のデバッグ用設定のcwd
に実行ファイルディレクトリを設定する。
設定例
ワークスペースの実行ファイル出力先が
"program": "${workspaceFolder}/bin/Debug/netcoreapp3.1/CoreTest201011.dll"
となっている場合は、
"cwd": "${workspaceFolder}"
を
"cwd": "${workspaceFolder}/bin/Debug/netcoreapp3.1/"
のように実際の出力ディレクトリとなるように変更する。
インターネット上の記事でDirectory.GetCurrentDirectory()
の代わりにAssemblyやAppDomainから実行ファイルのパスを取得する解決方法なども紹介されていますが、カレントディレクトリとバイナリディレクトリのどちらが適切かはソフトウェア設計次第ですので、結果だけを見て小手先の修正を行なってしまわないよう注意が必要です。
以上です。