私はいくつかのクラスを異なるプロジェクトや名前空間に移動することを含むアーキテクチャのクリーンアップを行っています。現在、私は手動でファイルを移動し、ビルドしてから、コンパイルエラーを解決するために必要に応じてFooを使用ステートメントを手動で追加しています。これを行う賢い方法を知っている人はいますか? (私たちはCodeRushとRefactor!ショップですが、Resharperがこれをサポートしてくれるかどうか聞いてみたいです)
Resharperは、この能力があることを知っている唯一のツールです。 CodeRushとRefactorには欠けている他の多くの機能もあります!
Visual Studio 2010では、名前空間の名前を変更できます。名前空間名の上にカーソルを置き、を押します F2。または、単にコードで名前を変更して、 Shift+Alt+F10、 Enter 赤い波線が表示されるのを見てから。
Reharperは 名前空間の名前を変更 もできます。見積もり:
名前空間の名前変更リファクタリングにより、ユーザーは特定の名前空間の名前を変更し、コード内の名前空間へのすべての参照を自動的に修正できます。次の使用法の名前が変更されました。
- 名前空間ステートメント
- ディレクティブを使用する
- 型の修飾名
この回答は、少なくともVisual Studio 2013および2015に適用されます再シャーパーは不要
MyCorp.AppStuff.Api
MyCorp.AppStuff.Api.Extensions
Visual Studio 2019は、少なくとも2つの組み込みオプションを提供します。
'Move to namespace ...' リファクタリングはどのクラスでもトリガーでき、VSはターゲットのネームスペースを要求します。
'Change namespace to ...' 現在のファイル名前空間がフォルダー構造と一致しない場合にリファクタリングが提供されます。
これは、次の方法で個々のクラスを異なるネームスペースに移動するために使用できます。
これらの操作により、すべての参照がそれに応じて更新されます。
VS 2015およびVS 2017には部分的な解決策があります、Resharperなし、無料の拡張機能を使用します。
私が今日(2017年末)気に入っている拡張機能の1つは、名前空間の修正VS拡張機能です。 https://marketplace.visualstudio.com/ items?itemName = vs-publisher-599079.FixNamespace#overview
ソリューションのフォルダー構造を分析し、それを使用して名前空間のリファクタリングを提供します。残念ながら、それは完全ではありません。依存関係をそれほど追跡しませんが、私にとって作業の大部分を解決しました。
Resharperを使用する場合: CTRL+R+O
次に、下矢印キーを2回押して、タイプを別のネームスペースに移動を選択します。
上記の答えが提供されたので(推測)、この機能はCodeRushに追加されました。移動するTypeにカラットを置くだけで、リファクタリングにMove Type to Namespaceオプションが表示されます!コンテキストメニュー。これにより、タイプが新しいネームスペースに移動され、参照が更新されます。ただし、名前空間の名前と一致するソリューションフォルダーにファイルを移動することもできます。
これは最良の結果ではありませんが、プラグインやツールなしで、Visual Studioでのみ実行できます。ソリューション全体、大文字と小文字の区別、単語全体の一致を検索して置換します。内容:クラス名、置換:New.Namespace.ClassName(完全修飾クラス名)。
移動されたクラスおよび古い名前空間にある他のクラスの100以上の参照が移動されていない場合、これが唯一の絶対確実で無料のソリューションです。エラーが発生する唯一のケースは、他のネームスペースに同じクラス名がある場合です。
Re $ harperを使用できない場合、または使用しない場合は、Notepad ++がお友達です。
[〜#〜] done [〜#〜]