【C#】Visual Studioでソリューション名・プロジェクト名を後から変更する手順
はじめに
「とりあえずConsoleApp1のまま作り始めてしまった」「後から仕様が変わってプロジェクト名がしっくりこなくなった」——そんな経験はありませんか。
Visual Studioでは、右クリックメニューから「名前の変更」を選ぶだけでは表示上の名前しか変わらず、フォルダ名・プロジェクトファイル名・名前空間(namespace)がバラバラのまま残ってしまうことがあります。これは一見動くので気づきにくいのですが、放置するとチームで作業したときに混乱の元になります。
この記事では、ソリューション名とプロジェクト名を「見た目だけでなく実体まで」正しくリネームする手順を、初心者の方にもわかるように整理します。
変更前に押さえておきたい構造
まず、1つのC#プロジェクトには名前に関わる要素が複数あることを理解しておきましょう。
| 要素 | 具体例 | 変更が必要な理由 |
|---|---|---|
| ソリューションファイル | MyApp.sln |
プロジェクト全体をまとめる単位 |
| プロジェクトフォルダ | MyApp\ |
ファイルシステム上のディレクトリ |
| プロジェクトファイル | MyApp.csproj |
ビルド設定の実体 |
| アセンブリ名 | MyApp.dll |
ビルド後の出力ファイル名 |
| 既定の名前空間 | namespace MyApp |
コード内でのクラスの所属先 |
「名前の変更」を1回実行しただけでは、このうち一部しか変わりません。順番に見ていきましょう。
手順1:ソリューション名を変更する
- ソリューション エクスプローラーで、一番上のソリューション項目(
ソリューション 'MyApp' (1 プロジェクト)のような表示)を右クリック - 「名前の変更」を選択し、新しいソリューション名を入力
- これで
.slnファイルの表示名は変わりますが、ディスク上のファイル名はまだ古いままです
ディスク上の .sln ファイル名も揃える場合
VSを一度閉じ、エクスプローラーで MyApp.sln を新しい名前(例:NewAppName.sln)にリネームします。その後、そのファイルをダブルクリックしてVisual Studioを開き直せば完了です。
💡 ソリューション名はあくまで「プロジェクトの集合を束ねるラベル」なので、実は多少ズレていてもビルドには影響しません。ただし可読性のため、フォルダ名・.slnファイル名は揃えておくのがおすすめです。
.sln と .slnx、どちらを使っている?
近年のVisual Studio・.NET SDKでは、ソリューションファイルにも新旧2つの形式が存在します。
| 形式 | 特徴 |
|---|---|
| .sln(レガシー) | テキストベース。GUIDを多用し、Project("{GUID}") = "MyApp", "MyApp\\MyApp.csproj", "{GUID}" のような読みにくい構文 |
| .slnx(新形式・XML) | シンプルなXML。GUID不要で <Project Path="MyApp/MyApp.csproj" /> のように簡潔 |
.NET 10以降は dotnet new sln コマンドが既定で .slnx を生成するようになり、Visual Studio側でも新規ソリューション作成時に .slnx が使われるケースが増えています。既存の .sln を .slnx に変換したい場合は、dotnet sln migrate コマンドか、VSの「ファイル → 名前を付けて保存 → XML Solution File」から変換できます。
どちらを使っているかは、ソリューションフォルダ内の拡張子を見れば一目瞭然です。この記事のここから先の手順は .sln 形式を前提に説明していますが、.slnx の場合も考え方は同じで、GUIDを気にせず <Project Path="..."> の部分を書き換えるだけなので、むしろ作業はシンプルになります。
手順2:プロジェクト名を変更する
こちらがつまずきやすいポイントです。以下の順番で進めます。
① ソリューション エクスプローラーでの名前変更
- 変更したいプロジェクトを右クリック
- 「名前の変更」を選択し、新しいプロジェクト名を入力
これで .csproj ファイル名とプロジェクトの表示名は変わります。しかし、以下はまだ古いままです。
- プロジェクトのフォルダ名
- コード内の名前空間(namespace)
- アセンブリ名/既定の名前空間の設定値
② プロジェクトのプロパティで名前空間を統一する
- プロジェクトを右クリック → 「プロパティ」
- 「アプリケーション」タブを開く
- 「アセンブリ名」「既定の名前空間」を確認
💡 これらの欄が薄いグレーで
$(MSBuildProjectName)と表示されている場合は未設定(プレースホルダー)です。この状態ならプロジェクト名のリネームに自動追従するので、何もしなくて大丈夫です。もし黒字で具体的な名前(例:OldAppName)が入力されている場合は、そこだけ明示的に新しい名前へ修正してください。過去に一度でも手動入力したことがあると、.csprojに値が固定されていてリネームに追従しません。この挙動はVisual Studioのバージョンではなく、プロジェクトファイルの形式で決まります。
プロジェクト形式 既定値の挙動 SDK形式( .csprojが<Project Sdk="Microsoft.NET.Sdk">で始まる)明示指定がなければ $(MSBuildProjectName)に自動追従レガシー形式( <Project ToolsVersion="...">で始まる旧来の.csproj)VSがプロジェクト作成時に具体的な値を書き込む。追従しない .NET(Core/5以降)のプロジェクトはほぼすべてSDK形式です。.NET Frameworkのプロジェクトはテンプレートや変換の有無によってどちらの形式もあり得るため、
.csprojの先頭行を確認するのが確実です。
ここを見落とすと、新しく追加したファイルだけ新namespace、古いファイルは旧namespaceという状態になり、後で必ず混乱します。
③ 既存コード内のnamespaceを一括置換する
プロパティを直しても、すでに書かれているコード内のnamespace MyApp {...}は自動では変わりません。
// 変更前
namespace MyApp
{
public class Player
{
public string Name { get; set; }
}
}
// 変更後
namespace NewAppName
{
public class Player
{
public string Name { get; set; }
}
}
Ctrl + Shift + H(ソリューション全体で検索と置換)を使い、namespace 旧名→namespace 新名を一括置換- あわせて
using 旧名;のような記述がある場合も置換対象に含める
置換後は必ず一度ビルドして、エラーが出ないか確認してください。
④ プロジェクトフォルダ名をディスク上でも揃える
- Visual Studioを閉じる
- エクスプローラーでプロジェクトフォルダ(
MyApp\)を新しい名前にリネーム .slnファイルをテキストエディタで開き、パスの参照が古いフォルダ名のままになっていないか確認(Visual Studioが自動で追従してくれることも多いですが、念のため確認するのが安全です).slnをダブルクリックして開き直し、正常にロードされるか確認
💡
.slnファイルには各プロジェクトの.csprojへの相対パスが記載されています。フォルダ名だけリネームしてパスを更新していないと、ソリューションを開いた際に「プロジェクトが見つかりません」というエラーになります。.sln内のProject("{...}") = "MyApp", "MyApp\\MyApp.csproj", "{GUID}"のような行を探し、"MyApp\\MyApp.csproj"の部分を新しいフォルダ名・ファイル名に書き換えてください。
.slnx の場合はもっとシンプルで、<Project Path="MyApp/MyApp.csproj" />の Path 属性を書き換えるだけです。GUIDを探す手間がない分、こちらの方が確認しやすいです。
手順3:最終確認チェックリスト
一通り変更したら、以下を確認しましょう。
- ソリューションが正常に開ける
- 全プロジェクトがビルドエラーなく通る
namespaceの記述が新しい名前で統一されている- 出力される
.dll/.exeのファイル名が意図通り - (Gitを使っている場合)フォルダ名変更がリモートリポジトリと矛盾していないか
つまずきやすいポイントまとめ
- 「名前の変更」は表示名だけを変える操作。実体(フォルダ・ファイル・namespace)は別途対応が必要
- namespaceの一括置換を忘れると、新旧のnamespaceが混在してusing文だらけになる
- フォルダ名変更はVisual Studioを閉じてから行うのが安全(開いたままだとファイルロックで失敗することがある)
おわりに
プロジェクト名の変更は「小さな作業」に見えて、実は複数の場所に手を入れる必要がある典型例です。今回のように表示・実体・コード内の3層に分けて考えると、抜け漏れなく進められます。
初めてリネームに挑戦する方は、作業前に一度Gitでコミットしておく(またはフォルダごとバックアップを取っておく)と、失敗しても安心して戻れるのでおすすめです。





ディスカッション
コメント一覧
まだ、コメントがありません