dotCover 設定の管理と共有
dotCover はレイヤード設定の仕組みを使って環境設定を保存し、次の利点が得られます:
さまざまなソリューションで異なる設定を行うことができます。
環境設定のさまざまなサブセットを別の場所に保存し、特定のソリューションで作業するときに環境設定を組み合わせることができます。
設定の特定のサブセットを VCS 下で管理することで、チーム内で環境設定を同期できます。 dotCover は、チーム環境設定を別ファイルとして保持し、ソリューションフォルダーに保存して VCS に簡単に追加できるというデフォルトのオプションを提供します。 他のチームメンバーが dotCover を使っている場合、このファイルの設定は VCS から変更を取得した時点で自動的に適用されます — Visual Studio の再起動やソリューションの再読み込みは不要です。
設定の任意のサブセットをファイルに保存して動的に更新できるため、dotCover 環境設定は他にも様々な方法で共有できます。 例: あなたの個人的な好みを Dropbox に保存し、別のマシンで使用することができます。
異なる設定ファイルの設定はレイヤーとして適用されるため、同じ設定が異なる設定ファイルで異なる値を持つ場合、'upper' レイヤーの値が使用されます。 これにより、このファイルで変更するのではなく、特定の設定ファイルで定義された設定を上書きすることができます。
デフォルト設定とレイヤーの設定
初期状態で、dotCover には .NET の規則やベストプラクティスに基づいたデフォルトの環境設定セットが用意されています。 これらのデフォルト設定は製品にハードコードされており、必要に応じていつでもデフォルトにリセットできます。 設定を変更した場合、その変更は設定レイヤーに保存され、dotCover により対応するデフォルト設定をオーバーライドして適用されます。 初期状態では、dotCover は環境設定を保存できるレイヤーとして このコンピューター、 ソリューションチーム共有、 ソリューションパーソナル の 3 種類を提案します。
「このコンピューター」レイヤー
この設定レイヤーは、個人のグローバル設定用に指定されており、ローカルマシン上のすべてのソリューションに適用されます。
対応する設定ファイルは次のように保存されます。
「ソリューションチーム共有」レイヤー
このレイヤーは、現在のソリューションに対するチームの設定を強制する一般的な設定用に指定されています。 このレイヤーの設定は、 このコンピューター レイヤーの設定を上書きします。
対応する設定ファイル <SolutionName>.sln.DotSettings がソリューションフォルダーに保存されます。
このファイルが VCS に追加され、チームメンバーが取得するとすぐに、ソリューションを再ロードせずに、このファイルの設定が自動的に適用されます。
「ソリューションパーソナル」レイヤー
このレイヤーを使用すると、チーム共有の設定を変更せずに上書きできます。 このソリューションでのみ、チームとは関係なくいくつかの設定を適用する必要がある場合は、これが役立つことがあります。
対応する設定ファイル <SolutionName>.sln.DotSettings.user がソリューションフォルダーに保存されます。 それを VCS に追加しないでください。
以下の図を考えてみましょう。 最初はすべての設定レイヤーが空なので、dotCover はそれらを「見通す」ことができ、デフォルト設定が適用されます:

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

変更を適用するには、次のいずれかのボタンを使用して変更を保存する必要があります。
保存 (スマートセーブ)
これは「スマートセーブ」ロジックを適用します。
これを使用して、変更を保存し、チーム共有レイヤーやカスタムレイヤー(存在する場合)をそのまま維持します。 つまり、レイヤーの設定を気にせずに変更を保存したいだけの場合は、 保存 を使用します。
保存 は変更内容を「このコンピューター」設定レイヤーに保存し、さらに「ソリューションチーム共有」やカスタムレイヤーに同じ設定の他の値があれば、「ソリューションパーソナル」レイヤーにも変更を保存し、他のレイヤーの値をオーバーライドします。
以下の図の例を考えてみましょう。 例えば、いくつかの設定を変更して「青」の値ではなく「緑」の値とした場合、これらの変更は「このコンピューター」レイヤーに保存されました。 次に、チームで「設定A」と「設定C」を「黄色」にすることに決めたので、これらの値は「ソリューションチーム共有」レイヤーにチームリーダーによって保存され、dotCover は VCS から変更を取得した時点でそれらを適用しました。 最後に、設定 A の「緑」の値の方が使いやすいと感じて再度変更・保存した場合、今度は「ソリューションパーソナル」レイヤーにも保存され、チーム共有レイヤーを変更せずに希望の値が適用できるようになります:

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

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

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

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

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