【Visual Studio】ソリューションエクスプローラーからファイルを開けない
Visual Studioでソリューションエクスプローラーからファイルを開けないのをなんとかしたい!
概要
今回の記事では、Visual Studioでソリューションエクスプローラーからファイルを開けないのをなんとかする手順を掲載する。
仕様書
環境
- Microsoft Visual Studio Community 2022 (64 ビット) Version 17.10.3
手順書
ある日、いつものソリューションファイルを開いて、開発を行おうとしたところ、ソリューションエクスプローラーに表示されてるcsファイルをクリックしてもエディターにソースコードが表示されない!
ファイル自体は確かに存在してるのに!なんでや!
例としてソリューションはD:\repos\neko_kawaii_solution
に配置されてる。シンボリックリンクでD:\repos
がC:\repos
としてもアクセスできるようになってる。
はい!なんだか雲行きが一気に怪しくなってきた感じ!
もともとはC:\repos\repos\neko_kawaii_solution
としてソリューションを新規作成してたんだけども、その日に限ってD:\repos\repos\neko_kawaii_solution
としてVisual Studioで開いてた。
C:\repos\repos\neko_kawaii_solution
からVisual Studioで開くと正常にソリューションエクスプローラーからファイルを開けた。
そんなこともあるんですね。
これにて解決!というだけだと記事として物足りないのでもうちょっと。
なぜこんなことになるかというとslnファイルにプロジェクトのパスが絶対パスで記録されてるのが原因のようでこれを相対パスに直すと実態からでもシンボリックリンクからでも正常にソリューションを開くことができるようになる。
C:\repos\repos\neko_kawaii_solution\neko_kawaii_solution.sln
をエディターで開いてみると
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.6.33829.357
MinimumVisualStudioVersion = 10.0.40219.1
Project("{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}") = "neko_kawaii_solution", "C:\repos\neko_kawaii_solution\neko_kawaii_solution.csproj", "{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}"
EndProject
Global
...
EndGlobal
こんな感じになってるので絶対パスの部分(C:\repos\neko_kawaii_solution\neko_kawaii_solution.csproj
)をslnファイルの場所を基準にした相対パスに修正する。
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.6.33829.357
MinimumVisualStudioVersion = 10.0.40219.1
Project("{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}") = "neko_kawaii_solution", "neko_kawaii_solution.csproj", "{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}"
EndProject
Global
...
EndGlobal
もし、前述の手順でも改善されない場合は、エディターのファイル名のタブを一旦全て閉じてみる。
タブの上で右クリック->「タブをすべて閉じる」
私の環境では後述の手順で解決したケースもあった。
まとめ(感想文)
デフォルトで相対パスで管理してほしいと思う今日この頃。