Visual Studioでソリューション(およびディレクトリ)の名前を変更する適切な方法


415

名前を変更する必要があるかなり複雑なVisual Studioソリューション(2010年ですが、問題ではありません)があります。

新しいソリューション名と一致するようにフォルダーの名前を変更したいのですが、フォルダー名を自動的にリファクタリングする方法がわからず、プロジェクトファイルを1つ1つ確認するのは面倒です。

これを行う公式の方法はありますか?代わりに(そして、はるかに望ましくはありません)、これを達成するための無料のツールはありますか?



13
これはどのように重複していますか?彼はプロジェクトではなくソリューションの名前変更を求めています!
バイキング、

回答:


375

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

このメソッドは、Windowsエクスプローラで表示されるように、プロジェクトのディレクトリの名前を変更することを完全に目的としています。

この方法は、以下のプロジェクトファイルの削除/追加方法(参照が消える)の問題の影響を受けませんが、プロジェクトがソース管理下にある場合に問題が発生する可能性があります(以下の注を参照)。これが、ステップ2(バックアップ)が非常に重要である理由です。

  1. Visual Studioを閉じます。
  2. .slnファイルのバックアップを作成します(いつでもロールバックできます)。
  3. ディレクトリの名前をに変更したいとProject1Project2ます。
  4. ソース管理を使用していない場合は、フォルダーの名前をWindows Explorer Project1Project2使用するように変更します。
  5. ソース管理を使用している場合は、フォルダーの名前をから、ソース管理によって提供される機能Project1Project2使用するように変更します。これにより、ファイルの履歴が保持されます。たとえばTortoiseSVN、でファイルを右クリックし、を選択しますTortoiseSVN .. Rename
  6. .slnファイル、編集中のすべてのインスタンスがProject1あることをProject2などのテキストエディタ使用して、メモ帳を
  7. Visual Studioを再起動すると、すべてが以前と同様に機能しますが、プロジェクトは別のディレクトリにあります。

あなたも見ることができ、手動でソリューションの名前変更またはこの手動のプロセスを説明するポストを

メリット

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

警告

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

アップデート2014-11-02

ReSharperは、上記の手動の方法と同じ結果を達成するための自動化された方法を追加しました。名前空間が波線の青い線で下線が引かれている場合は、アクションピラミッドアイコンをクリックして次のいずれかを実行します。

  • ネームスペースの名前を変更して、Windowsエクスプローラのディレクトリ名と一致させるか、または
  • Windowsエクスプローラでディレクトリの名前を変更して、名前空間に一致させます。

2番目のケースでは、最後の単語でWindowsエクスプローラの新しいディレクトリ名を定義ViewModel2しますViewModel2。たとえば、名前空間をに変更した場合、ファイルをfolderに移動することが提案されます。

ただし、これによってソース管理のファイルが更新されるとは限らないため、手動の方法を使用する必要がある場合があります。

ここに画像の説明を入力してください

2018-01-31を更新

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

アップデート2020-05-02

Visual Studio 2019でテスト済み。


2
注:VS2012を使用した場合でも、再起動する必要があります。再起動しないと混乱してしまい、愚かなエラーが発生します
Simon_Weaver

1
「ソース管理があると、ファイルの履歴が失われます」これは、私たちにとって少し大きな欠点です(監査など)履歴を維持しながら推奨される経路はありますか?
dougajmcdonald 2013年

23
Visual Studioはとても強力なプログラムですが、この機能は含まれていませんか?ワオ..
ルカスティーブ

2
@Contangoで説明されている解決策を実行した後でも、エラーが発生していました。アセンブリでOwinStartup属性が見つかりました...古い名前と競合する新しい名前を起動しています。私はobjフォルダーとbinフォルダーを調べ、古い名前のファイルをすべて削除して、他はすべてそのままにしました。新しく名前を付けたプロジェクトでvsを再起動し、それは魅力のように実行されました!感謝!
nocturns2

2
@LucaSteebうん、伝えられるところによると、2012年は約5,000万行のコードでした。#monolithic
Chiramisu

158

ソリューションの名前を変更するには、次の手順を実行する必要があります。

  1. ソリューションエクスプローラーでプロジェクトを右クリックし、[名前の変更]を選択して、新しい名前を入力します。
  2. ソリューションエクスプローラーでプロジェクトを右クリックし、[プロパティ]を選択します。「アプリケーション」タブで、「アセンブリ名」と「デフォルトの名前空間」を変更します。
  3. メインのcsファイル(またはその他のコードファイル)で、名前空間宣言の名前を変更して、新しい名前を使用します。これを行うには、名前空間を右クリックし、「リファクタリング」>「名前変更」を選択して、新しい名前を入力します。例えば: namespace WindowsFormsApplication1
  4. Properties / AssemblyInfo.csのAssemblyTitleおよびAssemblyProductを変更します。

    [assembly: AssemblyTitle("New Name Here")]
    [assembly: AssemblyDescription("")]
    [assembly: AssemblyConfiguration("")]
    [assembly: AssemblyCompany("")]
    [assembly: AssemblyProduct("New Name Here")]
    [assembly: AssemblyCopyright("Copyright ©  2013")]
    [assembly: AssemblyTrademark("")]
    [assembly: AssemblyCulture("")]
    
  5. binおよびobjディレクトリを物理的に削除します。

  6. プロジェクトの物理フォルダディレクトリの名前を変更します。

  7. SLNファイルを(メモ帳または任意のエディター内で)開き、プロジェクトへのパスを変更します。

  8. プロジェクトを削除して再構築します。


1
それは完全に動作します!ただし、Dataset手動で管理する必要があります(プロジェクトに接続している場合)。
Sujith HS、2014

2
動作します!また、.slnファイルと.suoファイルの名前も変更する必要がありました。そして、ステップ4はVS 2010の前のステップのいずれかによって既に完了していることがわかりました
パッチ

3
手順1でソリューションまたはプロジェクトを参照しているかどうかについて少し混乱しています。両方の名前をそれぞれ異なる名前に変更します。新しい名前空間は、新しいソリューション名またはプロジェクト名ですか?これを明確にしてくれてありがとう。
アランフィッシャー

1
これは(VS2013を使用して)私にとっても機能しましたが、\Packages\repositories.configファイル内のプロジェクトパスを逃しました 。
テッド

1
ソリューションを再度開く前に、検索ツールのエージェントランサックを使用して、すべてのファイルとフォルダーを検索し、以前のソリューション/プロジェクト名への参照を探して修正しました。これを行うために必要ないくつかの場所がありました。
アンディG

31

Visual Studioの名前変更操作では、ファイル名のみが変更されます。つまり、プロジェクトの場合は* .prjで、ソリューションの場合は* .slnです。ファイルシステムを使用してフォルダの名前を個別に変更する必要があります。また、プロジェクトには新しいフォルダ名が付けられるため、プロジェクトを削除して再読み込みする必要があります。ただし、ソリューションファイルとプロジェクトファイルはそれぞれtexstファイルとxmlファイルであることに注意してください。それらを解析し、フォルダー名とファイル名の両方の名前を変更し、プロジェクト/ソリューションファイルを内部で修正する独自のプログラムを作成できます。


1
これを行う無料のツールはありますか?何も見つかりませんでした。
David Pfeffer

5
:あなたを助けるかもしれない唯一のものはCoolCommandsは4.0ので、あなたが削除した後に/プロジェクトフォルダの名前を変更していること、あなたが一度にそれらをすべてのバックを追加することができ、「フォルダからプロジェクトを追加」であるsharptoolbox.com/tools/coolcommands
AaronLS

1
崇高なテキスト2には、これに対処しやすくする正規表現検索および置換機能があります。
jfyelle 2013年

22

テンプレートをエクスポートし、エクスポートしたテンプレートから新しいプロジェクトを作成して、名前を好きなように変更することもできます


1
これも私にとってはうまくいきました。しかし、私は1つの調整をしなければなりませんでした。私はWebアプリケーションでエンティティフレームワークを使用していて、古い.dllファイルを元のプロジェクト名のままにしていたので、テーブルクラスで何らかのタイプの重複エラーが発生する理由を突き止める必要がありました。それらをプロジェクトから削除すると、問題なく動作しました。うまくいけば、これが役立ちます。そして、ありがとう、エドアルド!
Steve

2
これは絶対に最善の方法です。msdn.microsoft.com/ en- us / library /…を参照して、[新しいプロジェクト]ダイアログでエクスポートされたテンプレートを移動する場所を確認してください
Ares Ou

13

以下は、Visual Studio 2013でソリューション全体の名前を変更する手順です。

「HelloWorld.ui」という名前のプロジェクトを「Section1to5.ui」に変更するとします。

  1. ソリューションエクスプローラー(下のスクリーンショット)に移動し、名前を変更するプロジェクトを右クリックして、[名前の変更]を選択します。希望する新しい名前を入力します。

ソリューションエクスプローラーのスクリーンショット

  1. 名前を変更したプロジェクトを右クリックし、[プロパティ]をクリックします。「アプリケーション」タブで、「アセンブリ名」と「デフォルトの名前空間」を変更します。

  2. メインのProgram.csファイル(または作成した他のコードファイル)で、名前空間宣言の名前を変更して、新しい名前を使用します。これを行うには、名前空間を右クリックし、「リファクタリング」>「名前変更」を選択して、新しい名前を入力します。例えば:

    名前空間HelloWorld.ui ---->名前空間Section1to5.ui

  3. 次に、「プロパティ」を展開し、AssemblyInfo.csファイルをダブルクリックします。以下のコードの断片に気づくでしょう:

[assembly: AssemblyTitle("HelloWorld.ui")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Microsoft")]
[assembly: AssemblyProduct("HelloWorld.ui")]
[assembly: AssemblyCopyright("Copyright © Microsoft 2015")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

Properties / AssemblyInfo.csのAssemblyTitleとAssemblyProductを新しい名前に変更する必要があります。この例では、「HelloWorld.ui」から「Section1to5.ui」に変更します。名前の変更が完了したら、Visual Studioを保存して閉じます。

  1. プロジェクトディレクトリで、「HelloWorld.ui」フォルダ内に移動し、「bin」および「obj」ディレクトリを削除します。

  2. 完了したら、「HelloWorld.ui」フォルダの名前を新しいプロジェクト名に変更します。

  3. 名前を変更したソリューションファイルをNotepadやNotepad ++などのテキストエディターで開き、次の行を編集します。

    Project( "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}")= "HelloWorld.ui"、 "HelloWorld.ui \ HelloWorld.ui.csproj"、 "{39FC65A3-3AE7-4EC9-B8F7-74F971636C70}"

「HelloWorld.ui」のすべてのインスタンスを、プロジェクトに選択した新しい名前(この場合は「Section1to5.ui」)に置き換えます。これにより、プロジェクトのパスが手順6で名前を変更したディレクトリに変更されます。

  1. Visual Studioでソリューションファイルを開き、プロジェクトをクリーンアップして再ビルドします。

  2. 「Debug / Run」ボタンが「Attach」ボタンに置​​き換えられていることに気付くでしょう。この場合は、プロジェクトを右クリックして、[スタートアッププロジェクトに設定]オプションを選択します。または、[ツール]> [カスタマイズ]> [コマンド]> [コマンドを追加]> [デバッグ]をクリックして、ボタンを追加します。

プロジェクトの名前の変更は完了です。疑問がある場合は遠慮なく投稿してください。手伝っていただけると嬉しいです。


6

binおよびobjサブフォルダーを削除して、誤った参照の負荷を削除してから、ウィンドウを使用して古い名前を検索します。

見つかったコードまたはxmlファイルを編集して再構築します。これで問題ありません。


5

ASP.NET Core 2ソリューションでプロジェクトの名前を正常に変更するために、Visual Studio拡張機能「Full Rename Project」を使用しました。

次に、ReSharperを使用して名前空間を調整しました(プロジェクトを右クリックし、リファクタリングし、名前空間を調整します...)

https://github.com/kuanysh-nabiyev/RenameProjectVsExtension

ここに画像の説明を入力してください




4

Visual Studio Project Renamerを試しましたが、いくつかのケースで例外が発生しました。

私はCopyWizで大成功しました

私はそれらとはまったく関係がなく、まだ支払いを行っていませんが、C#プロジェクトとC ++プロジェクトの両方で機能するように見える唯一のツールであるため、まもなく支払う必要があります。私は彼らが少しお金を稼ぐことを望みます、そして、しかし、それを改善し続けます。


4

プロジェクトファイルメソッドの削除/追加

このメソッドは、Windowsエクスプローラで表示されるように、プロジェクトのディレクトリの名前を変更することを完全に目的としています。

  1. GIT、SVN、WinZip(重要!)などを使用してプロジェクト全体をバックアップします。
  2. Visual Studioのソリューション内で、プロジェクトを削除します。
  3. Windowsエクスプローラでディレクトリの名前を変更します。
  4. Visual Studio内でプロジェクトを再度追加します。

メリット

  • Windowsエクスプローラ内のディレクトリを、ソリューション内のプロジェクト名と一致させることができます。

短所

  • ライブラリを削除すると、そのライブラリへの参照が他のプロジェクトから削除されます。このライブラリへの参照を追加するまで、この後ソリューションはコンパイルされない可能性があります(これは非常に簡単です)。これが、ステップ1(バックアップ)が非常に重要である理由です。
  • ソース管理がある場合は、ファイルの履歴が失われます。

プロジェクトを右クリックして[Windowsエクスプローラーでフォルダーを開く]を選択すると、このプロセスの実行中にプロジェクトが保存されている場所を追跡するのに役立ちます。


4
WinZip ??? 実際のソース管理を使用していて、コードのzipファイルのバックアップを作成していないことを願っています。あなた、またはこれを読んでいる人なら、try.github.ioをチェックして、テストプロジェクトを試してみてください。戻らないよ!
Matt Klein

2
私はあなたのコメントミスター@MattKleinを読み、あなたは正しかった:Dありがとう!
Jeancarlo Fontalvo 2017年

@Matt Klein完全に同意、GITまたはSVNも推奨するように更新。
Contango 2017年

3

あなたはできる:

  1. [ファイル]-> [新規]-> [既存のプロジェクトからプロジェクトを作成]をクリックします

  2. 元のファイルを選択します。ソリューション1と新しいファイル名ソリューション2を入力

  3. 新しいソリューション2でプロジェクト名を変更する


私はこのアプローチが非常に好きですが、それは特定の理由で反対投票ですか?
コープ2015

私のマシンを最後の方に閉じ込めました-Visual Studio 2017
klewis

3

Xamarinなどの共有プロジェクトの読み込みに問題がある場合は、csprojファイル内の共有ライブラリへの参照を変更することを忘れないでください。CocosSharpゲームを開発しましたが、Droid / iOS / WP81プロジェクトをロードしたくありませんでした。Shared libを参照するすべてのcsprojファイル(Driod / iOS / WP81)の行の下を変更する必要がありました。これはフォルダ名の変更が原因で発生したため、YOUR_PREVIOUS_NAMESPACEを新しいフォルダ名に置き換えてください。

<Import Project="..\YOUR_PREVIOUS_NAMESPACE.Shared\EmptyProject.Shared.projitems" Label="Shared" />

また、.Driodプロジェクトの場合、Visual Studioを使用してプロジェクトプロパティのアセンブリ名を変更できないことにも気付きました(私は2015を使用しています)。.Droid.csprojファイルでアセンブリ名を手動で変更する必要がありました。

<AssemblyName>YourNameSpace</AssemblyName>

次に、ソリューションをロードし、プロジェクトプロパティビューに新しい名前が表示されました。その名前のdllを再構築した後、生成されました。


2

Visual Studio 2010でWebサイトを作成している場合。次のようにプロジェクト名を変更できます。

ステップ1:Visual Studio 2010では、SLNファイルはVisual Studio 2010内のプロジェクトフォルダーに保存され、ソースファイルはVisual Studio 2010内のWebサイトフォルダーに保存されます。

手順2:SLNプロジェクトを含む[名前の変更]を右クリックして、フォルダーの名前を変更します。

手順3:SLNファイルを右クリックして名前を変更して、SLNファイルの名前を変更します。

手順4:Visual Studio 2010のWebサイトで、そのSLNファイルのソースを含むフォルダーの名前を変更します。

ステップ5:次に、最後にSLNファイルをダブルクリックし、SLNソースフォルダーのルートを変更します。


2

WEBプロジェクトのVisual Studio 2013で私のために機能する唯一のソリューション:

「project1」の名前を「project2」に変更したいとしましょう。私の.slnファイルへの物理パスがc:\ my \ path \ project1 \ project1.slnであるとしましょう

そのため、.csprojファイル、binおよびobjフォルダーへのパスは、c:\ my \ path \ project1 \ project1 \である必要があります。

  1. project1.slnファイルをダブルクリックして、VSでソリューションを開きます。

  2. ソリューションエクスプローラーで、プロジェクト(ソリューションではなく!!!)を右クリックし、[名前の変更]を選択して、新しい名前を入力します。

  3. ソリューションエクスプローラーでプロジェクトを右クリックし、[プロパティ]を選択します。「アプリケーション」タブで、「アセンブリ名」と「デフォルトの名前空間」を変更します。

  4. メインのCSファイル(またはGlobal.asaxなどの他のコードファイル)で、名前空間宣言の名前を変更して、新しい名前を使用します。これを行うには、名前空間を右クリックし、「リファクタリング」>「名前変更」を選択して、新しい名前を入力します。例えば:

名前空間プロジェクト1

4.1ソリューションエクスプローラーで、プロジェクト(ソリューションではなく!!!)を右クリックし、[名前の変更]を選択して、新しい名前を入力します。

  1. 確認:Properties / AssemblyInfo.csのAssemblyTitleとAssemblyProductが新しい名前( "project2")に設定されている。

1 [アセンブリ:AssemblyTitle( "ここに新しい名前")] 2 [アセンブリ:AssemblyDescription( "")] 3 [アセンブリ:AssemblyConfiguration( "")] 4 [アセンブリ:AssemblyCompany( "")] 5 [アセンブリ:AssemblyProduct( "ここに新しい名前 ")] 6 [アセンブリ:AssemblyCopyright("著作権©2013 ")] 7 [アセンブリ:AssemblyTrademark(" ")] 8 [アセンブリ:AssemblyCulture(" ")]

  1. Visual Studioを閉じます。

  2. binおよびobjディレクトリを物理的に削除します。

  3. 親フォルダーとソースフォルダーの名前を新しい名前(project2)に変更します。

例では、c:\ my \ path \ project1 \ project1

c:\ my \ path \ project2 \ project2になります

  1. SLNファイルの名前を変更するには、そのSLNファイルを右クリックして[名前の変更]をクリックします。

  2. 最後に、SLNファイルを(メモ帳または任意のエディター内で)開き、古い名前をコピーして(Ctrl + h)新しい名前に置き換えます。

  3. VSを開き、ビルド->ソリューションのクリーンをクリックします

  4. [ビルド]-> [ソリューションのビルド]をクリックし、次にF5をクリックして実行します...

  5. 注1:次のようなエラーが発生した場合:コンパイルエラーCS0246:タイプまたは名前空間名 'project2'が見つかりませんでした(usingディレクティブまたはアセンブリ参照がありませんか?)

ソースファイル:c:\ Users \ Username \ AppData \ Local \ Temp \ Temporary ASP.NET Files \ root \ 78dd917f \ d0836ce4 \ App_Web_index.cshtml.a8d08dba.b0mwjmih.0.cs

次に、「Temporary ASP.NET Files」フォルダに移動して、すべてを削除します。

  1. 注2:新しい名前のプロジェクトに「名前を付けて保存」を行い、古いプロジェクトも保持する場合は、web.configのconnectionStringsを変更してdbを複製することを検討してください。事業。

2

VSは初めてです。同じ問題が発生しました。開始したプロジェクトの名前を数週間後に変更する必要がありました。これは私がやったことで、うまくいきました。

  1. 念のため、フォルダProjectのバックアップを作成します。ただし、触れないでください。念のためです。
  2. 新しいプロジェクトを作成し、「新しい」プロジェクトに付ける名前、つまり「古い」プロジェクトに変更する名前を使用して保存します。
  3. それを構築します。その後、必要な名前のプロジェクトが作成されますが、それは何も実行せず、ウィンドウ(私の場合はWindowsフォームアプリ)を開きます。
  4. 新しいプロジェクトを開いた状態で、[プロジェクト]-> [既存のシステムの追加]をクリックし、Windowsエクスプローラーを使用して「古い」フォルダープロジェクトを探し、... Visual Studio xxx \ Projects \ oldApp \ oldAppの下にあるすべてのファイルを選択します。
  5. そこにあるすべてのファイル(.vb、.resx)を選択し、それらを「新しい」プロジェクト(既に開かれているはずのプロジェクト)に追加します。
  6. ほとんど最後のステップは、ソリューション
    エクスプローラーを使用してプロジェクトファイルを開き、最初のタブでデフォルトのスタートアップフォームを本来あるべきフォームに変更することです。
  7. すべてを再構築します。

おそらくより多くのステップがありますが、タイピングはほとんどまたはまったくありません。マウスをクリックするだけです。それが役に立てば幸い :)




弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.