ReSharper 設定の管理と共有
ReSharper は階層化された設定の仕組みを使って環境設定を保存しており、次の利点があります:
さまざまなソリューションで異なる設定を行うことができます。
環境設定のさまざまなサブセットを別の場所に保存し、特定のソリューションで作業するときに環境設定を組み合わせることができます。 例: シンボルのアイコンとチーム設定のコード形式を個人設定で保存し、これらの設定を自動的に組み合わせることができます。
特定の設定のサブセットを VCS 管理下に置くことで、チーム内で環境設定を同期できます。 ReSharper には、チームの環境設定を別ファイルとしてソリューションフォルダー内に保存し、そのファイルを VCS に簡単に追加できるデフォルトオプションが用意されています。 他のチームメンバーが ReSharper を使用している場合、このファイルの設定は VCS から変更をプルした時点で自動的に適用されます。Visual Studio の再起動やソリューションの再読み込みは必要ありません。
設定の任意のサブセットはファイルに保存して動的に更新できるため、さまざまな方法で ReSharper の環境設定を共有できます。 例: あなたの個人的な好みを Dropbox に保存し、別のマシンで使用することができます。
異なる設定ファイルの設定はレイヤーとして適用されるため、同じ設定が異なる設定ファイルで異なる値を持つ場合、'upper' レイヤーの値が使用されます。 これにより、このファイルで変更するのではなく、特定の設定ファイルで定義された設定を上書きすることができます。
次の例を検討してください。
BSD スタイルの角括弧を使い、このフォーマット環境設定を個人設定に保持しているとします。 しかし、特定のソリューションで GNU スタイルの角括弧を使う規則がある場合、ReSharper では対応するフォーマット環境設定を変更してソリューション固有の設定レイヤーに保存し、それによって個人の環境設定をオーバーライドしてこのソリューションで作業している間はその設定が適用されます。 別のソリューションを開くと、個人の環境設定が再び適用されます。
デフォルト設定とレイヤーの設定
初期状態で ReSharper には .NET の標準的な規則やベストプラクティスに基づいたデフォルトの環境設定が用意されています。 これらのデフォルト設定は製品にハードコーディングされており、必要に応じていつでもデフォルトにリセットできます。 設定を変更した場合、その変更内容は設定レイヤーに保存され、ReSharper が該当するデフォルト設定をオーバーライドして適用します。 初期状態では、ReSharper は このコンピューター、 ソリューション チーム共有、 ソリューション個人 の3つのレイヤーを提案し、これらに環境設定を保存できます。
「このコンピューター」レイヤー
この設定レイヤーは、個人のグローバル設定用に指定されており、ローカルマシン上のすべてのソリューションに適用されます。
対応する設定ファイルは次のように保存されます: %APPDATA%\JetBrains\Shared\vAny\GlobalSettingsStorage.DotSettings
「ソリューションチーム共有」レイヤー
このレイヤーは、現在のソリューションのチーム設定を適用する一般的な設定(たとえば、 名前付けスタイル、 フォーマットルールなど)用に指定されています。 このレイヤーの設定は、 このコンピューター レイヤーの設定を上書きします。
対応する設定ファイル <SolutionName>.sln.DotSettings がソリューションフォルダーに保存されます。
このファイルが VCS に追加され、チームメンバーが取得するとすぐに、ソリューションを再ロードせずに、このファイルの設定が自動的に適用されます。
「ソリューションパーソナル」レイヤー
このレイヤーを使用すると、チーム共有の設定を変更せずに上書きできます。 このソリューションでのみ、チームとは関係なくいくつかの設定を適用する必要がある場合は、これが役立つことがあります。
対応する設定ファイル <SolutionName>.sln.DotSettings.user がソリューションフォルダーに保存されます。 それを VCS に追加しないでください。
以下の図を考えてみましょう。 最初はすべての設定レイヤーが空であるため、ReSharper はそれらを「見通して」デフォルト設定を適用します:

実際、最初は設定レイヤーのファイルは存在せず、何らかの設定を変更して保存したときに初めて作成されます。 ただし、設定ファイルが存在する場合でも、その中で定義されていない設定については依然「透明」です。
設定を保存して上書きする
ReSharper オプション ダイアログで設定を変更するたびに、未保存の設定数を示すメッセージがダイアログの下部に表示されます。

変更を適用するには、次のいずれかのボタンを使用して変更を保存する必要があります。
保存 (スマートセーブ)
これは「スマートセーブ」ロジックを適用します。
これを使用して、変更を保存し、チーム共有レイヤーやカスタムレイヤー(存在する場合)をそのまま維持します。 つまり、レイヤーの設定を気にせずに変更を保存したいだけの場合は、 保存 を使用します。
保存 はあなたの変更を「このコンピューター」設定レイヤーに保存し、その後、変更対象の設定について「ソリューション チーム共有」やカスタムレイヤーに別の値がある場合は、「ソリューション個人」レイヤーにも保存され、他レイヤーの値をオーバーライドします。
以下の図を考えてみましょう。 設定を 3 個変更し『青』ではなく『緑』の値にした場合、これらの変更は「このコンピューター」レイヤーに保存されます。 次に、チームで設定 A と C を「黄色」に決定し、これらの値はチームリーダーによって「ソリューション チーム共有」レイヤーに保存されます。ReSharper で VCS の変更をプルすると、すぐに適用されます。 最終的に設定 A について『緑』の値のほうが使いやすいと気づき再度変更・保存した場合、今回は「ソリューション個人」レイヤーにも保存されるため、チーム共有レイヤーを変更せず希望の値が適用されます:

次へ保存 (特定のレイヤーに保存)
これらのコマンドを使用して、変更した設定を「ソリューションチーム共有」レイヤーまたはカスタムレイヤーに保存する必要があります。 また、必要に応じて他のレイヤーに変更を保存することもできます。
設定を特定のレイヤーに保存する唯一の方法は、同じ設定が、レイヤーのスタックの上の他のレイヤーのどこにでも別の値で定義されている場合、適用されないことです。 下の図は、「このコンピューター」レイヤーで設定 C を「赤色」に変更しようとした理由と、結果の設定を変更できなかった理由を示しています。

設定レイヤーを管理する
デフォルトでは「ソリューション チーム共有」レイヤーを使ってソリューションごとに ReSharper の設定を共有できます。必要なのは *.dotSettings ファイルをバージョン管理下に置くことだけです。
他の方法で設定を共有したい場合は、新しい設定レイヤーを作成し、インポートおよびエクスポートする方法を学ぶ必要があります。 これらの目的のために、ReSharper には Visual Studio メニュー( )や ReSharper オプション ダイアログ(管理 ボタンをクリック)で利用可能な設定レイヤーダイアログが用意されています。

カスタム設定レイヤーは既存のデフォルトレイヤーの下に追加されます。 例えば、カスタムレイヤーの設定をすべてのソリューションに適用したい場合は「このコンピューター」の下に追加します。そうでない場合、チーム共有設定をオーバーライドするかどうかに応じてソリューション固有のレイヤーのいずれかの下に追加します。
カスタム設定レイヤーが追加されるとすぐに、 保存先 セレクターとして ReSharper オプション ダイアログ内に表示され、これを使って変更した設定をカスタムレイヤーに保存できます。 この レイヤーを編集することで、このレイヤーの設定を変更することもできます。
カスタム設定レイヤーを追加する
設定レイヤー ダイアログで、レイヤーを追加するデフォルトのレイヤーの 1 つを選択します。
次のいずれかを実行します。
レイヤーを追加する
をクリックし、次に 設定ファイルの作成 をクリックして新しい空の設定レイヤーまたは 設定ファイルを開く を作成して、ファイルシステムまたは任意の URI から既存の設定レイヤーを組み込みます。右クリックして、 レイヤーを追加する セレクタで対応するコマンドの 1 つを選択します。
選択したコマンドに応じて、新しい設定レイヤーファイルの名前と場所を指定するか、拡張子 .DotSettings の既存の設定レイヤーファイルを選択します。
追加されたレイヤーの設定は、レイヤースタック内での位置に応じて適用されます(これは 設定レイヤー ダイアログで確認できます)。上位レイヤーに設定が定義されていれば、最終的な設定にはその上位レイヤーの値が使われます。 必要に応じて、 上へ移動 ボタンと 下へ移動 ボタンを使い、選択しているカスタム設定レイヤーのグループ内で順序を入れ替えることができます。
ReSharper オプション ダイアログの 保存先 ボタンで変更した設定を特定レイヤーに保存する代わりに、特定の設定レイヤーを開いて編集することもできます。
特定の設定レイヤーを編集する
設定レイヤー ダイアログで、編集する設定レイヤーを選択します。
次のいずれかを実行します。
レイヤーの編集
をクリックします。コンテキストメニューで右クリックし、 編集 を選択します。
目的のレイヤーをダブルクリックします。
オプション ダイアログが開き、レイヤーの名前とその場所がダイアログの上部に表示されます。

このモードで表示される設定の値は、デフォルト値または編集されたレイヤーで定義された値から取得されることに注意してください。 編集したレイヤーで設定が定義されていない場合、デフォルト設定の値が表示されます(たとえば、下の図の「設定 B」の値「青」)。
この場合、編集したレイヤーの「設定 B」に「青」という値を保存する必要がある場合は、まず他の値で設定を保存してから、もう一度編集して目的の値で保存する必要があります。

必要に応じてレイヤー内の設定を編集し、 保存 をクリックして変更を保存します。
設定の特定のサブセットを任意の設定レイヤーから新しい設定ファイルにエクスポートできます。 このファイルは ReSharper の別のインスタンスで利用し、これらの設定を適用することができます。
設定レイヤーからファイルに設定をエクスポートする
設定レイヤー ダイアログで、設定をエクスポートする設定レイヤーを選択します。
次のいずれかを実行します。
ツールバーで、 インポート / エクスポート
をクリックし、 ファイルへエクスポート をクリックします。レイヤーを右クリックし、コンテキストメニューから ファイルへエクスポート を選択します。
表示される ファイルへエクスポート ダイアログで、エクスポートする設定のグループを指定し、 OK(確認) をクリックして、設定画層ファイルの名前と場所を指定します。
カスタム設定レイヤーを追加する代わりに、このカスタムレイヤーから既存のデフォルトまたはカスタムレイヤーの 1 つに設定のサブセットをコピーできます。
設定レイヤーファイルから設定レイヤーに設定をインポートする
設定レイヤー ダイアログで、設定をインポートする設定レイヤーを選択します。
次のいずれかを実行します。
ツールバーで、 インポート / エクスポートの設定
をクリックします。 インポートするファイルの場所に応じて、 ファイルからインポート または URL からインポート をクリックします。レイヤーを右クリックします。 コンテキストメニューで 指定元からインポート をクリックし、 ファイルからインポート または URL からインポート をクリックします。
インポートするファイルの場所を指定します。 URL からインポートすることを選択した場合は、ファイルへのパスを UNC 形式で指定する必要があることに注意してください。
表示される ファイルからインポート ダイアログで、インポートする設定のグループを指定し、 OK(確認) をクリックします。
ReSharper では、マウントされた設定レイヤーから別のレイヤーへ設定のサブセットをコピーすることもできます。
レイヤー間で設定をコピーする
設定レイヤー ダイアログで、設定をコピーする設定レイヤーを選択します。
次のいずれかを実行します。
ツールバーの 設定をコピー先へ移動する
をクリックし、ターゲット設定レイヤーを選択します。レイヤーを右クリックし、コンテキストメニューで 設定をコピー先へ移動する を選択し、ターゲット設定レイヤーを選択します。
表示される コピー先 ダイアログで、コピーする設定のグループを指定し、 OK(確認) をクリックします。
必要に応じて、特定の画層に保存されているすべての設定をクリアすることができます。 これを行うには、レイヤーを右クリックし、コンテキストメニューの リセット をクリックします。
さらに、すべての定義済みレイヤーのすべての設定をリセットし、すべてのカスタム設定レイヤーをマウント解除して、すべての設定をデフォルト値に戻すことができます。 これを行うには、ツールバーの すべての設定をリセットする
をクリックします。
カスタム設定レイヤーの横にあるチェックボックスをオフにして一時的に無効にすることも、特定のカスタム設定レイヤーを右クリックしてコンテキストメニューで 除去する を選択してマウントを解除することもできます。
設定を新しいバージョンにアップグレードする
新しいバージョンの ReSharper により、設定のストレージフォーマットが変更されることがあります。 そのような場合、影響を受ける設定ファイルは新バージョンの初回起動時に自動的にアップグレードされ、ReSharper は変更されたフォーマットの設定を設定ファイルに追加するだけです。 それはまたそれ以上のアップグレードを防ぐためにアップグレードされたものを言うエントリを追加します。 たとえば、次のようになります。
ただし、設定ファイルがアップグレードされた場合でも、廃止された設定は変更も削除もされないため、古い ReSharper バージョンでも引き続き利用できます(たとえばアップグレードしていないチームメイトとこのファイルを共有する場合など)。 とりわけ、これは自動的にアップグレードされた .dotSettings ファイルの 変更を VCS に安全にコミットできることを意味します。
ここで注意すべき点は、アップデート後に古いバージョンに戻ってこの古いバージョンで設定を変更し、その後新しいバージョンに戻った場合、ReSharper は設定を再度アップグレードしないということです。 変更した一部の設定は古い形式で保存され、新しいバージョンでは読み取れない場合があります。
あなた(またはチーム)が異なる 2 つのバージョンの ReSharper を同時に使用している場合、一方のバージョンで変更した環境設定がもう一方のバージョンで正しく読み込まれるか確認し、問題があれば別のバージョンでも同じ変更をもう一度行ってください。