0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Unity × Cursor】Cursorが.slnx非対応なので、.slnに自動変換する拡張機能を作った話

0
Last updated at Posted at 2026-05-16

はじめに

現行バージョンのUnityでは、Visual Studio用のファイルとして .slnx が生成される。
CursorではMicrosoft純正 C#拡張機能 が使えないため .slnx を読み込むことができない。
この .slnx.sln に変換することで、ソリューション読み込みエラーを回避することを検証しました。
本拡張機能を試してみたい人は 使用手順 から読むと早いです。

  • 対象読者: Unity 6 プロジェクトを Cursor で開き、Microsoft 公式の C# Dev Kit を使えないため コミュニティ版 C# 拡張機能を使用している人

記載時点の検証環境(再現・比較用):

項目 バージョン
Unity 6000.4.2f1
Visual Studio Editor(パッケージ) 2.0.27
Cursor 3.4.16(Universal)
VS Code(Cursor の About に表示される基盤) 1.105.1
MacOS Tahoe 26.3 (M Series)

Microsoft純正C#拡張機能が使えなくなった

今まで古いバージョンのUnityを使っていたこともあり、Unity × Cursorでの開発に不便を感じたことはなかった。
この度、Unityを現行バージョンに一新したところ、生成されるソリューションファイルが .sln から .slnx に変わった。CursorではMicrosoft提供の拡張機能が使えないため、このままでは開発ができない状況になった。

以下の記事で、Microsoft純正C#拡張機能が使えなくなったことを知りました。
https://zenn.dev/feelingover/articles/f01a54898afc02

この対策として .slnx.sln に変換することで、CursorでもC#補完ができることを検証しました。


なぜ slnx だけだと読めないか

.slnxXML で書かれたソリューションファイルです。一方、コミュニティ版の C# 拡張がこちらを ソリューションとして扱う場合、内部では昔ながらの テキスト形式 .sln(先頭に決まったヘッダーがある形式)として読む流れに寄っていることが多いです。

そのせいで .slnx をそのまま渡すと、「ヘッダーが無い」「別形式のファイルだ」といった扱いになり、ログには No file format header found のようなメッセージが出て、ソリューションとして認識されませんでした。「XML の .slnx と、クラシック .sln は別物」 とだけ押さえておけば十分だと思います。

という訳で、.slnx に載っているプロジェクト一覧を欠落なく拾い、コミュニティ版C#拡張機能が読める .sln 形式に翻訳させることを考えました。


今回のゴール

今回の目標はCursor 上でC#の補完・エラー表示・定義ジャンプが再び効くようにすることです。

変換スクリプト側で意識したのは次の 2 点です。

  1. Unity が出した .slnx に列挙されている .csproj を漏れなく拾う
  2. コミュニティ版C#拡張機能がパースできる クラシックな .sln テキストを出す(今回はFormat Version 12 系の見た目に寄せました)
  3. .slnx ファイルが更新される度に変換スクリプトを実行する

ほかに考えたが見送ったこと

Microsoft純正の C# 拡張+C# Dev Kit をCursorで使う: そもそもMicrosoft製の拡張機能がCursorなどのVSCode派生エディターで使えなくなっているので不可能と判断。

Unity内のプラグインVisual Studio Editor パッケージを古い版に固定して .sln 生成に戻す:現行バージョンのUnityではそもそも古いバージョンが選べないので、今回の趣旨から却下。

Pythonスクリプトで変換を実行する: .slnx ファイルが高頻度で更新されるので拡張機能で定期実行した方が早いと判断。


使用手順

  1. 以下のサイトからVSIXファイルをダウンロード(画面下部のslnx-auto-convert-0.1.0.vsixからダウンロードできます)
    Release v0.1.0
  2. VS Code または Cursor でコマンドパレットを開く。(⌘+⇧+P)
  3. 「Extensions: Install from VSIX…」(拡張機能: VSIX からインストール…)を実行。
  4. ダウンロードした .vsix を選択。
    実行後: コマンドパレットで 「Developer: Reload Window」(開発者: ウィンドウの再読み込み) を実行をお勧めします。
  5. インストール後、Unityで「Preferences > External Tools > Regenerate project Files」から .slnx ファイルを生成することでCursor上で本拡張機能が動き .sln形式に変換することができます。
  6. 以後、Unityで新しいスクリプトを作成するごとに生成される.slnx ファイルは、その度に .sln に変換されます。

うまくいかないときと注意点

  • 変換で付ける プロジェクト GUID が .csproj 内と一致しないことがあります。厳密なソリューション同一性が必要な用途では注意してください。
  • .csproj がまだ無い状態で .sln だけ作っても、補完は戻りません。Unity のプロジェクト生成から先に確認してください。
  • 本拡張機能は .vscode 内に .vstupatchdisable ファイルを作成します。これはUnityが dotnet.defaultSolution.slnx 形式に更新してしまうことを防ぎます。もし本拡張機能を削除する場合はこちらを消すことも忘れなきようお願い致します。

おわりに

この方法は 恒久対策というより橋渡しです。次のどれかが進めば、必要性は薄れていくはずです。

  1. 利用している C# ツールチェーンが .slnx をネイティブに扱えるようになる
  2. Cursor 側で 公式系の C# 拡張が現実的に使えるようになる
  3. そもそもUnity やパッケージ構成で古いものを使用すれば、クラシック .sln に戻せる

もし、他に良い対応策があればコメントなどで教えてくださると幸いです💦


参考リンク

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?