プロジェクトフォルダーの名前を変更するための現在の解決策は次のとおりです。
- ソリューションからプロジェクトを削除します。
- Visual Studio外のフォルダーの名前を変更します。
- プロジェクトをソリューションに再度追加します。
もっと良い方法はありますか?
プロジェクトフォルダーの名前を変更するための現在の解決策は次のとおりです。
もっと良い方法はありますか?
回答:
TFSユーザー:ファイル/フォルダーの名前を変更する前に警告する必要があるソース管理を使用している場合は、代わりにこの回答を参照してください。必要な追加手順が記載されています。
Visual Studioでプロジェクトのフォルダー、ファイル(.*proj
)、表示名を変更するには:
.sln
ファイルをNotepad ++などの別のエディターで直接開き、代わりにそこでパスを更新します。(最初にTFSなどでソリューションをチェックアウトする必要がある場合があります。)注:プロジェクトを削除してソリューションに再度追加することを含む他の推奨されるソリューションは、プロジェクトの参照を壊します。
これらの手順を実行する場合は、一致するように次の名前を変更することも検討してください。
また、次のアセンブリ属性の値を変更することも検討してください。
AssemblyProductAttribute
AssemblyDescriptionAttribute
AssemblyTitleAttribute
* .sol、* csprojファイルを使用してこれを行う別の方法があります。
次のようになります(* .solファイルに対して)。
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shani.Commands.Impl", "Shani.Commands.Impl\Shani.Commands.Impl.csproj", "{747CFA4B-FC83-419A-858E-5E2DE2B948EE}"
たとえば、最初の部分を新しいディレクトリに変更するだけです。
Impl\Shani.Commands.Impl\Shani.Commands.Impl.csproj
もちろん、プロジェクト全体をそのディレクトリに移動することを忘れないでください。
これはVisual Studio 2015では簡単です(古いバージョンで機能する可能性があります)。
.sln
ファイルを編集し、csprojへのパスを変更します。つまり、→ です。fu\bar.csproj
bar\bar.csproj
男、私はこれで苦労しましたか。残念ながら、Visual Studioにはワンクリックソリューションはありませんが、Visual Studio 2012を実行していて、プロジェクトがTeam Foundation Serverでソース管理されている場合、ソース履歴を保持しながら、次のように機能させます。
(@mjvのコメントを必ず読んでください。ステップ5-10はスキップできると彼は言っています)
上記のガイドは私のために働いた。うまくいかない場合は、ローカルソリューションを完全に削除して、ワークスペースのフォルダーマッピングを削除してください。念のためVisual Studioを再起動します。コンピューターからソリューション全体を実際に削除したことを確認してください。次に、ワークスペースへのソリューションのマッピングを読み取り、最新バージョンを取得します。上記の手順を試してください。上記の手順を実行中に問題が発生した場合も同様です。ソリューションをローカルで削除し、最新のソースを取得するだけで、作業する白紙の状態になります。
それでも問題が解決しない場合は、ソリューションファイルで手動で何も変更していないこと、または上記の手順を実行する前に他の「トリック」を試行していないことを確認してください。何かを変更してチェックインした場合は、プロジェクトの名前の変更をいじり始める直前に、ロールバックを行うことを検討してください。
もちろん、ソリューションエクスプローラーでプロジェクト自体の名前を変更することもできます。上記の手順の前にこれを行うことができますが、その場合は、上記の手順を適用する前にその変更を確認してください。後で行うこともできますが、ソリューションエクスプローラーでプロジェクト名を変更する前に、まず上記のすべての手順を実行し、変更内容を確認してください。ソリューションエクスプローラーで、上記の手順とプロジェクト名の名前変更を混在させることはお勧めしません。うまくいくかもしれませんが、2つの異なるチェンジセットで実行することをお勧めします。
VS2012
!代わりにソリューションを閉じてからVS' Source Control Explorer
ではなく、内のフォルダーの名前を変更する場合は、手順5〜10(つまり、名前を変更したフォルダーをソース管理内に戻す必要がある)を回避できることに注意してくださいWindows Explorer
。
Folder already exists
。そのため、フォルダを再度名前WE
変更して、SCE
で変更し、機能する前にファイルをそのフォルダにコピーする必要がありました。上記のmjvからのコメントに従ってください。また、実際のプロジェクトファイル名(VSだけでなく)を変更する必要があるとは考えていませんでした。後から考えて、これらの手順のいくつかを繰り返しました。
現在、ありません。まあ、実際には、壊れたプロジェクトノードをクリックして、プロパティペインでプロパティ 'Path'を探し、小さな参照アイコンをクリックして、新しいパスを選択できます。
ボイラ:)
より簡単な解決策は次のとおりです。
必要な手順は4つありますが、推奨される手順は7つです。結局のところ、プロジェクトの名前は完全に変更されています。技術的には、プロジェクトのフォルダー名はプロジェクト自体と一致する必要はないため、そのステップもオプションですが、一致しない場合は混乱する可能性があります。アセンブリと名前空間の名前についても同じです。
でandersjanmyrの答えは、最初のプロジェクトの名前を変更する方が簡単です。
また、これらの手順を実行した後、他の参照の名前を古いプロジェクト名に変更したい場合があります。
プロジェクトのプロパティで、アセンブリ名とデフォルトの名前空間を更新します。
これにより、プロジェクトファイルの以下が更新されます...
<RootNamespace>SomeProjectName</RootNamespace>
<AssemblyName>SomeProjectName</AssemblyName>
...そして「名前空間はファイルの場所に対応していません。'SomeProjectName 'でなければなりません」というエラーを取り除きます。
ルート名前空間の名前を変更します(ReSharperを使用している場合は、名前空間を右クリックして、[リファクタリング]-> [名前の変更]に移動します)。
AssemblyInfo.csで古いプロジェクト名のすべての出現箇所を変更します。
Visual Studio 2017の場合、次のVisual Studio拡張機能を使用できます。
次の場所でプロジェクトの名前が変更されます。
[assembly: InternalsVisibleTo("MyTests")]
。のMyTests
名前を変更しても、その参照の名前は変更されませんでした。繰り返しますが、これはあなたの権限の範疇に入らないと思います。手動で解決するのは簡単です。
Visual Studio + Gitを使用していて、ファイル履歴を保持したい場合(プロジェクトとソリューションの両方またはいずれか一方の名前を変更できます):
Visual Studioを閉じる
.gitignoreファイルで、名前を変更するプロジェクトのすべての無視パスを、それらのパスの名前を変更したバージョンで複製します。
次のようにGit moveコマンドを使用します。
git mv <old_folder_name> <new_folder_name>
追加オプションのドキュメントを参照してください:https : //git-scm.com/docs/git-mv
.slnファイル内:プロジェクトを定義する行を見つけ、パス内のフォルダー名を変更します。行は次のようになります。
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "<Project name>", "<path-to-project>\<project>.csproj"
Visual Studioを開き、プロジェクトを右クリック→ 名前の変更
その後、名前空間の名前を変更します。
私はReSharperがこれのためのいくつかのオプションを持っていることを読みました。しかし、単純な検索/置換でうまくいきました。
古い.gitignoreパスを削除します。
それは私のために働いた。
Visual Studio 2017で私のために働いたもの:
「プロジェクトの再追加」のようなものでした。私はすべてを再構築し、すべてがうまくいった。
Dependencies
>> Add reference
>>新しいプロジェクトを選択する)
私はこれを何度もしなければなりませんでした。既存のプロジェクトを再利用できることは本当に便利ですが、名前空間、ファイル、およびフォルダー(ファイル/ディレクトリ名を含む)内のテキストの名前を変更することができます。
ルートフォルダーから開始して再帰的な検索と置換を使用すると、名前の変更によってソリューションファイル内のプロジェクトとプロジェクト参照へのリンクが壊れません。
このため、私はこれを行うためのプロジェクトを作成しました。また、アプリケーションは、.git、.svn、.vs設定ファイルなどのバージョン管理フォルダーを無視しようとします。詳細については、READMEを参照してください。
ビジネスインテリジェンス向けデータツール(SSDT-BI 2013)用のVisual Studio拡張機能の実績あるソリューション:
それは100%テストされ、私の場合完璧に動作しました。
注:異なるプロジェクトテンプレートや他のバージョンのVisual Studioで動作するかどうかは確認できません。いつものように、事前にすべてをバックアップしてください。
私はこれらすべてのステップを自動化する小さなツールを書きました。今のところSubversionもサポートしています。
現在のリリースに関する情報は、Visual Studio Project Renamer Infosにあります。
Visual Studio Project Renamer Download Pageから最新のリリースをダウンロードできるようになりました。
フィードバックは大歓迎です。
Visual Studioでプロジェクトの名前を変更し、それを行うためにフォルダー名、プロジェクト名、.slnファイルを編集するという同じ問題がよくありました。私は、そのすべてを実現するVBScriptスクリプトを書いたところです。置換する文字列に注意する必要があります。
ソリューションの.slnファイルと同じディレクトリに.vbsファイルを配置するだけです。
' Script parameters'
Solution = "Rename_Visual_Studio_Project" '.sln'
Project = "Rename_Visual_Studio_Project" '.csproj'
NewProject = "SUCCESS"
Const ForReading = 1
Const ForWriting = 2
Set objFso = CreateObject("Scripting.FileSystemObject")
scriptDirr = objFso.GetParentFolderName(wscript.ScriptFullName)
' Rename the all project references in the .sln file'
Set objFile = objFso.OpenTextFile(scriptDirr + "\" + Solution + ".sln", ForReading)
fileText = objFile.ReadAll
newFileText = Replace(fileText, Project, NewProject)
Set objFile = objFSO.OpenTextFile(scriptDirr + "\" + Solution + ".sln", ForWriting)
objFile.WriteLine(newFileText)
objFile.Close
' Rename the .csproj file'
objFso.MoveFile scriptDirr + "\" + Project + "\" + Project + ".csproj", scriptDirr + "\" + Project + "\" + NewProject + ".csproj"
' Rename the folder of the .csproj file'
objFso.MoveFolder scriptDirr + "\" + Project, scriptDirr + "\" + NewProject
注:この修正はVisual Studio 2008用ですが、ここで機能するはずです。
.sln
親フォルダにあるファイルを削除します。.sln
ファイルへの変更を保存するかどうかを尋ねるダイアログが表示されます。をクリックしYesます。.sln
ファイルがフォルダーと同じ名前であることを確認してください。必須ではありませんが、一貫性は維持されます。)できました。
TFSを使用する場合、ステップ2は実際にはソース管理のフォルダーの名前を変更し、ソリューションを再び開く前に最新のものを取得することです。
私たちは最近、これを行う無料のVisual Studio拡張機能のベータ版をアップロードしました。
Visual Studio Gallery:Gallery Downloadをご覧ください
テキストエディターで.slnを開き、次の行で<FolderName>を新しいフォルダー名に変更しますProject( "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}")= "Ricky"、 "\ .csproj"、 " {021CC6B0-8CFB-4194-A103-C19AF869D965}」
新しいプロジェクトを作成する必要があり、プロジェクト名とは異なるプロジェクトフォルダー名が必要な場合にも、同様の問題が発生します。
新しいプロジェクトを作成すると、次の場所に保存されます
./path/to/pro/ject/YourProject/YourProject.**proj
それを直接ject
フォルダに入れたいとしましょう:
./path/to/pro/ject/YourProject.**proj
これを実現するための私の回避策は、パスの最後の部分を名前としてプロジェクトを作成し、追加のディレクトリを作成しないようにすることです。
./path/to/pro/ject/ject.**proj
Visual Studio内からプロジェクトの名前を変更すると、Visual Studioを離れることなく目的を達成できます。
./path/to/pro/ject/YourProject.**proj
このアプローチの欠点は、デフォルトの名前空間と出力バイナリの名前も調整する必要があること、およびプロジェクトテンプレートに含まれるすべてのファイルの名前空間を更新する必要があることです。
Visual Studio 2013とTFSを使用しています 2013。
私はそれをこのようにしました:
Visual Studio 2013 Update 1でテストされ、TFSに接続されたプロジェクトに適用できる、より簡単な方法があります。
最も簡単な方法は、ウィンドウのプロパティに移動し、デフォルトのネームスペースの名前を変更してから、名前の変更を行うことです。
私は次のことをしました:
<フォルダ全体のバックアップを作成>
Visual Studio 2013内からプロジェクトの名前を変更します(オプション/不要)。
プロジェクトをテンプレートとしてエクスポートします。
ソリューションを閉じます。
ソリューションを再開する
保存したテンプレートからプロジェクトを作成し、好きな名前を使用します。
ソリューションエクスプローラーから前のプロジェクトを削除します。
この時点で、新しいソリューションをコンパイルしようとしました。そのためには、いくつかのリソースとヘッダーを古いプロジェクトフォルダーから新しいプロジェクトフォルダーに手動でコピーする必要がありました。エラーなしでコンパイルされるまで、これを繰り返します。この新しいプロジェクトは、「. exe」ファイルを前のフォルダに保存しました。*
だから->
Windowsエクスプローラーに移動し、ソリューションファイルを古いプロジェクトフォルダーから新しいプロジェクトフォルダーに手動でコピーします。
ソリューションを閉じ、新しいプロジェクト内からソリューションを開きます。
必要に応じて、構成を(x64)に戻しました。
ソリューションのフォルダーから古い名前のプロジェクトのフォルダーを削除します。