Visual Studioがプロジェクトを別のフォルダーに移動する


182

プロジェクトをVisual Studioの別のフォルダーに移動するにはどうすればよいですか?私は自分のプロジェクトでこの構造に慣れています。

-- app
---- Project.Something
---- Project.SomethingElse

名前空間SomethingElse全体をSomethingNewに名前変更したいのですが、(手動で.slnファイルに移動せずに)それを行うための最良の方法は何ですか?


ソース管理プロバイダーとしてTFSを使用していますか?
ベルモ2010

フォルダのみ、またはプロジェクト全体の名前を変更しますか?
Charles Gargent、2010

プロジェクト、フォルダ、名前空間。
Egor Pavlikhin、2010

回答:


175

ソリューションエクスプローラーウィンドウでプロジェクトを右クリックし、[削除]を選択して、プロジェクトをソリューションから削除します。サブフォルダを含め、プロジェクトフォルダ全体をどこにでも移動します。プロジェクトをソリューションに戻します。

名前空間名は完全に異なるものです。ソースコードを編集するだけです。


6
それは私がやったことですが、プロジェクト全体を削除せずにそれをすべて行う方法があると思ったので、依存関係をすべて追加し直しました。
Egor Pavlikhin 2010

31
移動するプロジェクトを削除する前に、ソリューションからすべての依存プロジェクトをアンロードします。そうすれば、削除は検出されず、プロジェクトの参照はそのまま残ります。プロジェクトを移動してソリューションに再度追加した後、依存プロジェクトを再度読み込むことができます。
base2

13
TFSでファイルを削除してから、別のディレクトリまたはプロジェクトのTFSに再度インポートすると、ファイルの変更履歴が削除されることを忘れないでください。
ポール

変更履歴を失わずに実行したいので、必要なときに比較を実行できます。
user734028 '17年

196

プロジェクトを削除して再度追加するよう提案しましたが、依存関係を修正するのは面倒です。

私はこのアプローチを使用します:

  1. プロジェクトフォルダを移動します。
    • プロジェクトがソース管理にある場合は、ソース管理コマンドを使用して移動します。
  2. テキストエディターでソリューションファイルを編集します。変更する必要があるパスは1つだけです。

間違いなく簡単です!しかし、テキスト編集を使用してソリューションを移動および編集した後、ソリューションファイルは通常のテキストファイルのように下に表示されます。これを取り除くにはどうすればよいですか?
Abriel 2013

2
「プロジェクトがソース管理にある場合は、ソース管理コマンドを使用して移動します。」..これを行う方法を説明できますか?
アニッシュV

3
@AnishVたとえば、Gitを使用する場合は、のgit mv ...代わりに入力しmv ...ます。詳細については、git-mvドキュメントを参照してください。
cubuspl42 2014

3
.csprojファイルで、SolutionDirプロパティを更新し、プロジェクト参照のすべてのパスとnugetパッケージの場所を修正する必要があります。.slnファイルでは、プロジェクトへのパスを更新するだけで済みます。
ピート

これでうまくいきました。唯一の「トリック」は、.slnファイルを変更して、編集するために読み取り専用でなく、安全のために再び読み取り専用としてマークする必要があったことです。
JustWannaFly 2015

44
  1. VS2012でソリューションを閉じます
  2. プロジェクトを新しい場所に移動します
  3. ソリューションを開く
  4. ロードに失敗したプロジェクトを選択してください
  5. プロパティツールウィンドウに、新しいプロジェクトの場所を選択できる編集可能な「ファイルパス」エントリがあります。
  6. 新しいパスを設定する
  7. プロジェクトを右クリックし、再読み込みをクリックします

4
これは非常にうまく機能し、最も速くて簡単な方法であると思われますが、他のはるかに高い投票数の回答にも関わらずです。ここではそれについての記事があります:msmvps.com/blogs/deborahk/archive/2010/06/30/...は
マイク・ローゼンブラム

@MikeRosenblumリンクが壊れている、新しいリンクがあるblogs.msmvps.com/deborahk/...
ロワGavish

1
VS2012では機能しません。リンクされた記事では、VS2010についてのみ言及しています。
bassim

VS2010では、1つを除いてすべての参照を含め、うまく追加できました。
クリスチャン2016年

@Vasanth Visual Studio 2019では、プロジェクトを見つけるために.slnファイルを手動で編集する必要があります。おそらく(おそらく).csprojファイルもnugetパッケージの正しい場所を参照します。
カルトール

3

私のために働いたのは:

  1. ソリューションからプロジェクトを削除します。
  2. テキストエディタでプロジェクトファイルを編集します。
  3. 「パッケージ」へのすべての相対パスを更新します。私の場合、プロジェクトをより深いフォルダに移動..\packagesした..\..\..\packagesので、に変更する必要がありました。
  4. プロジェクトをソリューションに再度読み込みます。

2

私も同じ問題を抱えていました。参照を変更せずに、参照を移動して15分未満で解決しました。

私にとっての解決策は簡単でした:

  1. 必要な場所にファイルを移動します。
  2. .vsという名前のフォルダを削除します。見えないフォルダでなければなりません。
  3. noteやnotepad ++などのシンプルなエディターを使用してソリューションファイル(.sln)を開きます。
  4. 次の構造を使用して、ファイルがある場所の参照を変更します。プロジェクトを同じフォルダーに配置した場合は、前のフォルダーまたは参照 ".. \"を削除します。上記のフォルダに入れる場合は、参照「.. \」またはフォルダの名前を追加します。
  5. 変更を加えてファイルを保存します。
  6. プロジェクトファイル(.csproj)を開き、同じ操作を行い、参照を削除または追加します。
  7. 変更を保存します。
  8. ソリューションファイルを開きます。

例:

ソリューションファイル(.sln)

  • オリジナル: Project( "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}")= "PATH1.UI"、 " ScannerPDF \ PATH1.UI \ PATH1.UI.csproj"、 "{A26438AD-E428-4AE4-8AB8-A5D6933E2D7B } "Project(" {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} ")=" PATH1.DataService "、" ScannerPDF \ PATH1.DataService \ PATH1.DataService.csproj "、" {ED5A561B-3674-4613-ADE5-B13661146E2E }」

    新規: Project( "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}")= "PATH1.MX.UI"、 "PATH1.MX.UI \ PATH1.UI.csproj"、 "{A26438AD-E428-4AE4-8AB8 -A5D6933E2D7B} "Project(" {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} ")=" PATH1.DataService "、" PATH1.DataService \ PATH1.DataService.csproj "、" {ED5A561B-3674-4613-ADE5-B13661146E2E }」

プロジェクトファイル:

  • 元の:

    新着:

    元の参照: .... \ lib \ RCWF \ 2018.1.220.40 \ TelerikCommon.dll

    新しい参照: .. \ lib \ RCWF \ 2018.1.220.40 \ TelerikCommon.dll


2

概要:VS2019でのgit2019での名前の変更と移動、gitの履歴の保持、R#の活用、自動依存プロジェクト参照の更新(多くのプロジェクトを持つslnで重要、200以上)

Visual Studio 2019でC#プロジェクトの名前を変更して移動するには、次の手順を使用しています。このプロセスでは、R#を使用して名前空間を調整します。gitの履歴は、「git mv」を実行することで保持されます(履歴の追加/削除は回避されます)。

2つのフェーズ:1)プロジェクトの名前を変更し、2)プロジェクトを移動します。

base2 reアンロードプロジェクトからのチップを使用します。)

名前を変更

  1. VS | ソリューションエクスプローラー| プロジェクトを右クリック| 名前を変更します(例:Utils.FooからFoo)。
  2. VS | ソリューションエクスプローラー| プロジェクトを右クリック| プロパティ| アセンブリ名、デフォルトの名前空間、およびアセンブリ情報フィールドを変更する
  3. 対応するテストプロジェクト(Utils.Foo.Testsなど)に対して1および2を実行します。
  4. VS | ソリューションエクスプローラー| プロジェクトを右クリック(プロダクションとテスト)| リファクタリング| 名前空間を調整する
  5. プロジェクトを使用するXAMLファイルを更新する必要がある場合があります(手動または適切なグローバル検索と置換を使用)
  6. すべて再構築
  7. コミット!!(移動前に変更をコミットするため)

注:Windowsエクスプローラーのフォルダーは、この時点では古い名前のままです(たとえば、Utils.Foo)。これは移動ステップで修正されています。

動く

この方法:1)git履歴を保持する、2)R#を活用して名前空間をアトミックに調整する、3)依存プロジェクトを一括で更新する(依存するslnおよびcsprojファイルの面倒な手動編集を回避する)。

  1. ソリューション内のすべてのプロジェクトをアンロードします(ターゲットプロジェクトの削除によって依存プロジェクトの変更がトリガーされないようにするため)

    VS | ソリューションの下にあるすべてのソリューションフォルダーを選択します。Unload Projectsを右クリック

  2. gitを使用してフォルダを移動します(そのため、履歴が維持されます)

a)2019の開発者コマンドプロンプトを開く

b)git status(「コミットするものは何もない、作業ツリーがクリーン」を示すため)

c)プロジェクトのgit mv例:git mv "C:\ Code \ foo \ foo \ Utils.Foo" "C:\ Code \ Foo"

d)変更を表示/確認するためのgitステータス

  1. プロジェクトを削除する

VS | ソリューションエクスプローラー| プロジェクトを選択| 右クリック| 削除(すべてのプロジェクトがアンロードされるため、依存プロジェクトの参照が正しく削除されません)

  1. プロジェクトを再度追加します(ソリューションエクスプローラーのツリーの新しい場所に)

a)VS | ソリューションエクスプローラー| ターゲットの親フォルダを選択| 右クリック| 追加| 既存のプロジェクト

  1. すべてのプロジェクトを再読み込み

重要: 依存プロジェクトの* .csprojファイルが更新されていることを確認してください。

(VS |チームエクスプローラー|変更|リストされた依存csprojをダブルクリック| ProjectReferenceパスの変更を検査して確認)

  1. 移動した単一の* .csprojファイルのパスを手動で修正する

Notepad ++(または他のテキストエディター)を使用してパスを修正します。多くの場合、これは単純な検索と置換(たとえば、.. / .. / .. / .. /から../../)で実行できます。

これは更新されます...

a)GlobalAssmeblyInfo.cs参照

b)パッケージへのパス

c)依存関係検証図ファイルへのパス

d)のルールセット・パスへのパス(例えば、<CodeAnalysisRuleSet>..\..\..\..\SolutionDependencyValidation\IgnoreWarnings.ruleset</CodeAnalysisRuleSet>

  1. ソリューションを閉じて再度開きます(プロジェクト参照を適切な形にするには)

すべて保存、ソリューションを閉じる、履歴を消去するためにbinおよびobjフォルダーを削除することをお勧めします。ソリューションを再度開きます

  1. 検証

a)VS | チームエクスプローラー| 変化

i)移動されたファイルを示す段階的な変更を確認する必要がありますii)適切に更新された依存プロジェクト(* .csproj)を確認する必要がありますcsprojの差分を確認し、パスが美しく更新されていることを確認します!! (これは、テキストエディターを使用してcsprojファイルを手動で更新する手間を省く魔法です)

b)Windowsエクスプローラで、古い場所が空であることを確認します

c)ソリューションのクリーン、ソリューションの再構築、単体テストの実行、slnでのアプリの起動。

  1. コミット!!

1

VS2012では簡単です。マッピングの変更機能を使用するだけです。

  1. ソリューションの移動先となるフォルダーを作成します。
  2. すべてのプロジェクトファイルをチェックインする(変更を保持したい場合)、またはチェックアウトしたファイルをロールバックします。
  3. ソリューションを閉じます。
  4. ソース管理エクスプローラを開きます。
  5. ソリューションを右クリックして、「詳細設定->マッピングの削除...」を選択します。
  6. 「ローカルフォルダー」の値を、手順1で作成した値に変更します。
  7. 「変更」を選択します。
  8. ソース管理エクスプローラでソリューションをダブルクリックして開きます。

2
つまり、TFSを使用している場合はどうでしょうか。
Martin Ba

1

ビジュアルスタジオコミュニティ2019で、ビクターデビッドフランシスコエンリケの言うことを実行しましたが、.vs invisbileフォルダーを削除するだけで済みました


0

VS 2015で

  1. ソリューションエクスプローラーでプロジェクトをアンロードする
  2. 新しいソリューションを作成する
  3. プロジェクトを新しいソリューションのフォルダーにコピーする
  4. ソリューションを右クリックして、既存のプロジェクトを追加します。
  5. などのフレームワークを使用する場合MVCは、参照マネージャーに参照を追加する必要がある場合があります。

0

私はこれを試してみて、これが私のために機能することを理解しました。

Visual Studio 2017 Community Editionでは、このパスにプロジェクトを作成します "C:\ Users \ mark \ source \ repos \ mipmaps \ mipmaps"これにより、ファイルへのアクセスが作成され、問題が拒否されます

これで、この方法で修正できます。

ビジュアルスタジオプロセスを閉じます。次に、プロジェクトを見つけてプロジェクトフォルダーをコピーします。ただし、まず、ドキュメントのVisual Studio 2017フォルダー内にサブフォルダーNamed Projectsを作成します。次に、プロジェクトフォルダーをProjectsというサブフォルダーに移動する必要があるメインのVisual Studio 2017フォルダーではなく、Visual Studio 2017プロジェクトフォルダー内に貼り付けます。次に、Visual Studio 2017を再起動し、[Open Project Solution]を選択します。次に、貼り付けたプロジェクトをVisual Studio 2017の[Projects]フォルダーに配置し、プロジェクトをクリーンアップして再ビルドします。正しくビルドされ、コンパイルされます。希望、これは他の人を助けました。なぜMicrosoftが書き込み権限を必要とするパスでプロジェクトを構築するのが私を超えていると思ったのかわからない。


0

削除と追加ではなく移動/名前の変更としてGitの変更を表示する必要がありました。だから私は上記とこの投稿のコンボを行いました。

mkdir subdirectory
git mv -k ./* ./subdirectory
# check to make sure everything moved (see below)
git commit

そして、テキストエディターを介してslnファイルのnuget Pkgからのプロジェクトとアセンブリのパスを調整します。


0
  1. プロジェクトフォルダを新しい場所にコピーします
  2. ソリューションからプロジェクトを削除します(「ソリューションエクスプローラー」でプロジェクトを右クリックし、「削除」を選択します)
  3. 次に、既存のプロジェクトをソリューションに追加します(「ソリューションエクスプローラー」でプロジェクトを右クリックし、「追加」、「既存のプロジェクト」の順に選択します)
  4. 「YourProjectName.csproj」ファイルの「packages」フォルダへのパスを変更します(メモ帳で開き、リンクされたパッケージのパスを変更します)

0

これは私のために働いたvb2019。ソースプロジェクトフォルダーをコピーしました。次に、プロジェクトを貼り付け、フォルダの名前を任意の名前に変更しました。ソースプロジェクトフォルダーへの関連付けを解除するために、一時的にソースフォルダーの名前を変更しました。目的のプロジェクトを開きました。フォームとモジュールへのパスは、ローカルフォルダーで再検出されました。すべてのフォームとモジュールを調べて、それらが機能していることを確認しました。私はプロジェクトを実行しました。プロジェクトを閉じました。ソースプロジェクトフォルダーの名前を元の名前に戻しました。エラーなしで両方のプロジェクトを同時に開くことができます。


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