【Visual Studio】ソリューションエクスプローラーからファイルを開けない

ネコニウム研究所

PCを利用したモノづくりに関連する情報や超個人的なナレッジを掲載するブログ

【Visual Studio】ソリューションエクスプローラーからファイルを開けない

2024-8-20 |

Visual Studioでソリューションエクスプローラーからファイルを開けないのをなんとかしたい!

概要

今回の記事では、Visual Studioでソリューションエクスプローラーからファイルを開けないのをなんとかする手順を掲載する。

仕様書

環境

  • Microsoft Visual Studio Community 2022 (64 ビット) Version 17.10.3

手順書

ある日、いつものソリューションファイルを開いて、開発を行おうとしたところ、ソリューションエクスプローラーに表示されてるcsファイルをクリックしてもエディターにソースコードが表示されない!

ファイル自体は確かに存在してるのに!なんでや!

例としてソリューションはD:\repos\neko_kawaii_solutionに配置されてる。シンボリックリンクでD:\reposC:\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

もし、前述の手順でも改善されない場合は、エディターのファイル名のタブを一旦全て閉じてみる。

タブの上で右クリック->「タブをすべて閉じる」

私の環境では後述の手順で解決したケースもあった。

まとめ(感想文)

デフォルトで相対パスで管理してほしいと思う今日この頃。