VSCode上の.NET Core開発でカレントディレクトリが取得できないときの対応

この記事は公開から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から実行ファイルのパスを取得する解決方法なども紹介されていますが、カレントディレクトリとバイナリディレクトリのどちらが適切かはソフトウェア設計次第ですので、結果だけを見て小手先の修正を行なってしまわないよう注意が必要です。

以上です。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする