2011-10-06 33 views
7

私はResharper 5.1でVS2010を使用しています。特定のプロジェクトでクラスの使用を置き換えます。

私は、ライブラリプロジェクト(Lib)とアプリケーションプロジェクト(App)という2つのプロジェクトを持っていますが、アプリケーションはLibを参照しています。

Libには、AppとLibの両方で使用されるクラスXが含まれています。 Appでは、Xのすべての用途をクラスYに置き換えたいと考えています。私の場合、YはXとは無関係ですが、リファクタリングを簡単にするとXから継承できます。

私の現在の計画では、「用途を探す」機能を使用し、プロジェクトごとにグループ化し、用途を1つずつ変更します。これを行う簡単で自動化された方法はありますか?

+0

現在のプロジェクトでクイックリプレースはどうですか?クラス名XをYに置き換えますか? – wiero

答えて

4

Structural Search and Replaceはあなたの友人です。あなたはReSharper | Find | Search with Pattern...を通してそれに行きます。

  • タイプXのプレースホルダを定義し、それTX名前を付けます。
  • あなたの検索パターン$TX$
  • は、検索を実行、チェックとして「プロジェクト」
  • の「ルック」を指定してください - あなたはX
  • のすべての使用が置き換えトグルボタン
  • をクリックして表示されるはずです
  • 作る置き換えパターンの完全修飾名がY
  • [置換]をクリックします

ReSharperのは、翔ますあなたが言いたいことはすべてXです。ツリーの上部にあるチェックボックスがオンになっていることを確認して、置き換えをクリックします。

編集

それはタイプX、というよりもXという名前の何か他のものへの参照のみが、名前が変更されていることを確認し、当社の検索パターンでタイププレースホルダを使用することによって確かです。

あなたは

using A.B.C; 

/* later */ 
Y obObject = ... 

ではなく

A.B.C.Y myObject 

で終わることを好む場合、私はあなたがこれを通じ達成することができます考えるReSharper | Options

  1. Tools | Code Cleanupを定義します"Optimize 'using'ディレクティブを持つ新しいプロファイル「ReSharper | Options
  2. を確認Languages | C# | Namespace ImportsするA.B.Cを追加し、」いつもあなただけの名前空間からA.B.Cを除去することにより、
  3. Tidyのを定義したプロファイルを使用して
  4. 実行ReSharper | Tools | Cleanup Codeをimported`しなければならない名前空間は、あなたが
にこれを追加しまし一覧

これは他のすべてのusingもクリーンアップしますが、これにより、バージョンコントロール差分が必要以上に大きくなる可能性があります。

+0

findパターンは 'X'クラスへの参照のみが置き換えられ、コメントやプロパティ名に' X'が出現しないことを保証します。また、フォローアップとして、完全修飾名を置き換えて、適切な 'using'ステートメントを関連するファイルに追加する最も簡単な方法は何でしょうか? – Bubblewrap