既存のソリューションやプロジェクト、それらに付随して決定するフォルダ名やアセンブリ名、名前空間名を変更する方法と、その際の注意点を説明する。
Visual Studioのソリューションやプロジェクトの名前を変えたいことがある。例えば、開発スタート時には適当な名前を付けていたが正式な呼称が決まったとか、ソリューションやプロジェクトをコピーして名前を変えて使いたいといったような場合だ。本稿では、ソリューションやプロジェクトの名称変更の方法を、3種類に分けて解説する。
特定のトピックをすぐに知りたいという方は以下のリンクを活用してほしい。
ひと口に「プロジェクト名やソリューション名を変える」といっても、その変えたい対象によって大きく次のような3種類に分けられる。以降では、それぞれに分けて説明していく。
Visual Studioのソリューションエクスプローラに表示される名前を変えるのは簡単だ。ソリューションエクスプローラ上だけで作業が完結する。
プロジェクトやソリューションが格納されているフォルダの名前を変えるのは、ちょっと面倒だ。エクスプローラ(または、ソースコード管理システム)を使ってフォルダ名を変更し、影響を受けるソリューションファイル/プロジェクトファイルをテキストエディタで編集する。
プロジェクト名/ソリューション名の変更に合わせてアセンブリ名や名前空間を変えるには、プロジェクトのプロパティを修正するとともに、既存のコード中の名前空間も変更する。
名前を変更したいソリューション/プロジェクトをVisual Studioのソリューションエクスプローラ上で右クリックし、そのコンテキストメニューで[名前の変更]を選び、新しい名前を付ける。あるいは、ソリューションエクスプローラ上でソリューション/プロジェクトを選択した状態にしてから、[F2]キーを押すかもう一度クリックすることでも名前を変更できる。
この操作で変更されるもの
この操作では変更されないもの
例えば、とあるソリューションに「ClassLibrary1」というプロジェクトと、それを参照している「WpfApp1」というプロジェクトがあったとしよう。上記のようにしてプロジェクト名「ClassLibrary1」を「ClassLibrary2」に変更すると、「WpfApp1」プロジェクトの参照も自動的に修正される(次の画像)。
この作業は、Visual Studioでソリューションを開いていない状態で行う。フォルダ名を変更し、ソリューションファイルや関連するプロジェクトファイルをテキストエディタで編集する。
まずフォルダ名の変更だが、何らかのソースコード管理システム(ソースコードリポジトリ)を使っている場合は、その方法に従う。例えば、TFS(Team Foundation Server)などのTFVC(Team Foundation Version Control)では、ソース管理エクスプローラ上でフォルダ名をリネームする。あるいは、Gitではmvコマンドを使用する。ソースコード管理システム外でエクスプローラなどを使ってフォルダ名を直接変更してしまうと、ソースコード管理システムは名前変更ではなくフォルダの削除と追加が行われたと認識するので注意しよう。
ソースコード管理システムを使っていない場合は、エクスプローラなどでフォルダ名を直接変更すればよい。
フォルダ名を変更したら、その変更をソリューションファイルなどに反映させる必要がある。
フォルダ名を変更したときには、ソリューションファイル(.sln)の修正も必須である。例えば、プロジェクトファイル「ClassLibrary2.csproj」を置いている「ClassLibrary1」フォルダを「ClassLibrary2」にリネームした場合、ソリューションファイルをメモ帳などのテキストエディタで開いて、パスに含まれる「ClassLibrary1」の部分だけを探して「ClassLibrary2」に置き換える(次の画像)。パス以外にも同じ名前があるかもしれないので、十分に注意して作業してほしい。
次に、フォルダ名を変更したプロジェクトを他のプロジェクトから参照している場合は、参照している側のプロジェクトファイル(.csproj/.vbprojなど)も修正する。例えば、「WpfApp1」というプロジェクトが上の「ClassLibrary2」プロジェクトを参照しているならば、「WpfApp1」のプロジェクトファイル中のパスを(ソリューションファイルと同様に)修正する(次の画像)。やはりパス以外にも同じ名前があるかもしれないので、十分に注意して作業してほしい。
なお、プロジェクト配下のサブフォルダの名前や構成を変更するのは、Visual Studioのソリューションエクスプローラ上で行えばよい。プロジェクトファイル内の修正は自動的に行われる。
また、ソリューションを置いているフォルダ名の変更は、ソースコード管理システムを使っている場合は、その方法に従う。そうでなければ、Visual Studioを閉じておいて、エクスプローラでフォルダ名を変更するだけだ。
プロジェクト名を変更したら、それに合わせて、出力されるアセンブリ(.dll/.exe)の名前や、コード内で使っている名前空間も変更したいだろう。アセンブリ名と既定の名前空間は、プロジェクトのプロパティページで変更する。既存コード中の名前空間は、コード内でリファクタリングする。
まずアセンブリ名と既定の名前空間であるが、Visual Studioのソリューションエクスプローラで変更したいプロジェクトを右クリックし、そのコンテキストメニューで[プロパティ]を選ぶと、プロジェクトのプロパティ設定ページが表示される(次の画像)。ここでアセンブリ名と既定の名前空間を変更すればよい。
なお、ソリューションエクスプローラでプロジェクト名を変更したときに、連動してアセンブリ名と既定の名前空間も変更されるプロジェクトもあるようだ。Visual Studio 2017 15.6.5では、.NET CoreのコンソールアプリやXamarin.Formsの共有クラスライブラリ(.NET Standard 2.0のもの)などがそのような挙動を示した。
既存コード中の名前空間は、Visual Studioのリファクタリング機能を使って変更する(Visual Studio 2005以降)。まず適当な既存コードを開き、変更したい名前空間にカーソルを置く。続いてVisual Studio 2015やVisual Studio 2017では、[F2]キーを押してから名前空間を書き換える(次の画像)。
それ以前のVisual Studioでは、コード中の名前空間にカーソルを置いたら、右クリックメニューで[リファクター]−[名前の変更]を選ぶか、[Ctrl+R,R]キー([Ctrl]キーを押しながら[R]キーを2回)で出てくる[名前の変更]ダイアログで名前空間を書き換える(次の画像)。
最後に、リファクタリング機能から漏れてしまって変更されなかった名前空間があるといけないので、ソリューション内の全ファイルを対象に検索を行う(次の画像)。もしもこれで変更すべき箇所が見つかった場合は、手作業で修正する。
ソリューション名/プロジェクト名の変更を3種類に分けて説明した。中でもプロジェクトを置いたフォルダ名の変更は繊細な作業である。十分に気を付けて行ってほしい。作業を始める前に、ソリューションを丸ごとコピーしておくか、ソースコードリポジトリにコミットしておくと安心だ。
利用可能バージョン:Visual Studio 2005以降
カテゴリ:Visual Studio 処理対象:プロジェクト
カテゴリ:Visual Studio 処理対象:IDE
関連TIPS:Visual Studio 2005の既定のプロジェクト・フォルダを変更するには?
関連TIPS:複数のプロジェクトでファイルを共有するには?
Copyright© Digital Advantage Corp. All Rights Reserved.