まず、少し背景。
現在、コードベースのネームスペースとアセンブリ(〜60アセンブリ、数千のクラス)は次のようになります。
WidgetCompany.Department.Something
WidgetCompanyを駆動するソフトウェアを販売するようになりましたので、名前空間とアセンブリの名前を変更します
NewCompany.Something
通常の状況では、おそらく古い名前空間をそのまま使用しますが、問題は、アプリケーションのどこかに競合他社の名前を表示したくないということです。スタックトレース、アセンブリプロパティなどが表示される可能性がありますが、表示されません。これは、従業員を非表示にしたり、不吉なことをしたりするためのものではありません。別のエンティティ、別の管理者であることを人々に知らせ、データの共有について心配する必要がないことを確認する必要があります。
次に質問です。名前変更を含むこのタイプのすべてを実行する最良の方法は何ですか?以下を変更する必要があります。
using
ステートメントFind-replace-pray戦略にこだわっていますか、それとももっと良いものがありますか?
現在のネームスペースを右クリックして、[リファクタリング]-> [名前の変更]を選択し、しばらくすると表示されるポップアップで名前を変更します。新しい名前を入力して、[OK]をクリックします。
名前空間に複数の深さがある場合、Visual Studioではドットを入力できません。ただし、ドットをコピーして貼り付けると、警告は表示されますが、機能します。
ReSharper。 JetBrainsからバージョン5.1を30日間無料で入手します(名前を変更するのに十分な時間です)。変更したい名前空間にカーソルを置いてヒット Ctrl-R 2回(ReSharper Rename)。ネームスペースをいくつでも深いレベルで使用し、そのネームスペースの使用を新しいネームスペースに変換します。ただし、ソリューション内のすべての一意の名前空間を変更する必要があります(検索/置換を使用する場合を除く)
まず、Refactor->Rename
オプションを試してみます。しかし、別の回答のコメントで述べたように、それはそれほどうまく機能しません(または、それを機能させる方法を見つけていません)。したがって、特にいくつかの追加の名前空間を追加する場合は、次のシナリオを使用することをお勧めします。
1)NAMESPACE_TO_BE_REPLACED
を使用して、ルートネームスペース(WidgetCompany
)をRefactor-Rename
のような名前に変更します。
2)find-n-replaceダイアログを使用して、NAMESPACE_TO_BE_REPLACED
を最終的な名前空間(NewCompany.WidgetSoftware
)に置き換えます
また、プロジェクト、デフォルトの名前空間などの名前を変更することを忘れないでください。
ReSharperを使用している場合:
プロジェクトを右クリックプロパティ。デフォルトの名前空間を目的の名前空間に変更します。
プロジェクトを右クリックし、Refactor-> Adjust Namespaceをクリックして、すべての名前空間を更新し、デフォルトの名前空間を使用します
次に、魔法をかけてみましょう。
Visual Studio 2019 Community Editionは、これを here のようにサポートしています。 (ドット、ルート名前空間の変更などを含む)あらゆる階層で機能し、すべての依存関係を正しく更新します。
既に部分的に名前を変更している場合の代替ソリューション:
.*
のようなアイコン)YourSolution.YourProject
YourSolution.Your[partiallyRenamedNamespaceCharacters].*
Entire Solution
ではなくCurrent Document
が選択されていることを確認してください