1. ホーム
  2. visual-studio

[解決済み】Visual Studioでソリューション(およびディレクトリ)の名前を変更する正しい方法

2022-03-24 18:57:13

質問

私は、名前を変更する必要があるかなり複雑なVisual Studioソリューション(2010、しかしそれは問題ではないはずです)があります。

新しいソリューション名に合わせてフォルダ名を変更したいのですが、フォルダ名を自動的にリファクタリングする方法が分からず、プロジェクトファイルを一つ一つ見ていくのは骨が折れそうです。

このような公式な方法はあるのでしょうか?あるいは(できればあまり望ましくないのですが)、これを実現する無料のツールはありますか?

どのように解決するのですか?

.slnファイルを手動で編集する

この方法は、完全にWindowsエクスプローラで見たプロジェクトのディレクトリ名を変更することを目的としています。

の問題点はありません。 プロジェクトファイルの削除・追加方法 しかし、プロジェクトがソース管理下にある場合、問題が発生する可能性があります(以下の注意を参照)。そのため、ステップ2(バックアップ)は非常に重要です。

  1. Visual Studioを終了します。
  2. .slnファイルのバックアップを作成します(いつでもロールバック可能です)。
  3. ディレクトリの名前を変更する場合を想像してください Project1 から Project2 .
  4. ソースコントロールを使用していない場合は、フォルダ名を Project1 から Project2 をWindowsエクスプローラで実行します。
  5. ソース管理システムを使用している場合は、フォルダ名を Project1 から Project2 をソースコントロールが提供する関数を使って実行します。これにより、ファイルの履歴が保存されます。たとえば TortoiseSVN を選択し、ファイル上で右クリックし TortoiseSVN .. Rename .
  6. .slnファイルで、すべての Project1 に変更する。 Project2 のようなテキストエディターを使って メモ帳 .
  7. Visual Studioを再起動すると、プロジェクトが別のディレクトリにある状態で、すべてが以前と同じように動作します。

また ソリューションの名前を手動で変更する または この手動プロセスを説明する投稿 .

メリット

  • Windowsエクスプローラ内のディレクトリを、ソリューション内のプロジェクト名と一致させることができます。
  • この方法は ではない は、他のプロジェクトからこのファイルへの参照をすべて削除します (これは プロジェクトファイルの削除/追加 メソッド、以下の私の別の答えを参照してください)。

注意事項

  • この方法は、ソース管理で問題を引き起こす可能性があるため、名前を変更する前にすべてを.zipファイルにバックアップすることが重要です。
  • プロジェクトがソース管理下にある場合、ファイル名やファイル名を変更すると、問題が発生することがあります。 ディレクトリを、ソースコントロールの外側で(Windowsエクスプローラを使用して)使用することができます。 ソースコントロールフレームワーク自体を使用してファイル名を変更することが望ましいです。 可能であれば、そのファイルの履歴を保持するために(右クリックのコンテキストメニューをチェックしてください。)

更新情報 2014-11-02

ReSharperは、上記の手動による方法と同じ結果を得るための自動化された方法を追加しました。名前空間に青い下線が引かれている場合、アクションピラミッドのアイコンをクリックすると、どちらかになります。

  • Windowsエクスプローラでディレクトリ名と一致するように名前空間を変更する、または。
  • Windowsエクスプローラでディレクトリ名を名前空間と一致するように変更する。

2つ目のケースでは、最後の単語がWindowsエクスプローラでの新しいディレクトリ名を定義しています。 ViewModel2 に移動させることを提案します。 ViewModel2 .

ただし、この方法ではソース管理上のファイルは必ずしも更新されないので、やはり手動で行う必要があるかもしれません。

更新日 2018-01-31

Visual Studio 2008、2010、2012、2013、2015、2017 Update 1、2、3、4、5でテストしました。

2020-05-02更新

Visual Studio 2019でテストしました。

2021-11-19更新

再テストしました。まだ動作します。