管理和共享 dotCover 设置
dotCover 使用分层设置机制保存您的偏好设置,该机制提供以下优势:
您可以在不同的解决方案中拥有不同的设置。
您可以在不同的位置保留偏好设置的不同子集,并在处理特定解决方案时将它们组合起来。
您可以通过将特定的设置子集保存在 VCS 下,与团队同步偏好设置。 dotCover 提供了一个默认选项,将团队偏好设置保存在一个单独的文件中,该文件保存在解决方案文件夹中,可以轻松添加到您的 VCS 中。 如果其他团队成员使用 dotCover,当他们从 VCS 拉取更改时,该文件中的设置会自动应用,无需重新启动 Visual Studio 或重新加载解决方案。
由于任何设置子集都可以保存在文件中并动态更新,您可以通过多种方式共享您的 dotCover 偏好设置。 例如,您可以将个人偏好设置保存在 Dropbox 中,并在不同的计算机上使用它们。
来自不同设置文件的偏好设置以层的形式应用,因此如果同一设置在不同设置文件中具有不同的值,则使用“上层”中的值。 这使您可以覆盖特定设置文件中定义的设置,而无需更改该文件中的设置。
默认设置和设置层
开箱即用,dotCover 提供了一组默认的偏好设置,这些设置基于 .NET 世界中的约定和最佳实践。 这些默认设置是硬编码在产品中的,如果需要,您可以随时重置为默认值。 如果您更改了任何设置,您的更改会保存在设置层中,dotCover 会应用它以覆盖相应的默认设置。 最初,dotCover 提供了三个层,您可以在其中保存您的偏好设置: 本计算机、 解决方案团队共享 和 解决方案个人。
“本计算机”层
此设置层用于您的个人全局设置,并适用于本地计算机上的所有解决方案。
相应的设置文件保存为:
“解决方案团队共享”层
此层用于强制执行当前解决方案的团队偏好设置的通用设置。 此层中的设置会覆盖 此计算机 层中的设置。
相应的设置文件 <SolutionName>.sln.DotSettings 保存在解决方案文件夹中。
一旦此文件被添加到您的 VCS 中并被团队成员获取,他们将自动应用此文件中的设置,而无需重新加载解决方案。
“解决方案个人”层
此层允许您覆盖团队共享设置而无需更改它们。 如果您需要仅在此解决方案中应用某些设置,并且独立于您的团队,您可能会发现这很有帮助。
相应的设置文件 <SolutionName>.sln.DotSettings.user 保存在解决方案文件夹中。 您不应将其添加到您的 VCS。
请参考下图。 您可以看到,最初所有设置层都是空的,因此 dotCover 可以“透过它们”并应用默认设置:

实际上,最初设置层文件并不存在,它们是在您修改并保存某些设置时首次创建的。 但如果设置文件存在,对于所有未在其中定义的设置,它仍然是“透明的”。
保存和覆盖设置
每次您在 dotCover 选项 对话框中更改某些设置时,底部会显示一条消息,提示未保存设置的数量。

要应用更改,您应使用以下按钮之一保存它们:
保存(智能保存)
这会应用“智能保存”逻辑。
使用它可以保存您的修改,并保持团队共享层和/或自定义层(如果有)不受影响。 换句话说,如果您只想保存更改而不想处理设置层,请使用 保存。
保存 会将您的更改保存到“本计算机”设置层,然后——如果在“解决方案团队共享”和/或自定义层中有其他修改设置的值——这些更改也会保存到“解决方案个人”层,以覆盖其他层中的值。
请参考下图中的示例。 假设您更改了三个设置,并将值从“蓝色”改为“绿色”;这些更改已保存到“本计算机”层。 然后,您的团队决定在团队共享解决方案中将设置 A 和 C 的值改为“黄色”,因此这些值由团队负责人保存到“解决方案团队共享”层,dotCover 在您从 VCS 拉取更改后立即应用了它们。 最后,您意识到您更喜欢设置 A 的“绿色”值,并再次更改并保存了它,这次它也被保存到“解决方案个人”层,这使您能够在不更改团队共享层的情况下应用所需的值:

另存为(保存到特定层)
您需要使用这些命令将修改后的设置保存到“解决方案团队共享”层或自定义层。 如果需要,您也可以将修改保存到任何其他层。
将设置保存到特定层的唯一问题是,如果在堆栈中更高的层中以其他值定义了相同的设置,则它可能不会被应用。 下图显示了我们尝试在“本计算机”层中将设置 C 更改为“红色”以及为什么最终设置未能更改的原因。

管理设置层
默认情况下,您可以使用“解决方案团队共享”层按解决方案共享 dotCover 设置——您只需将 *.dotSettings 文件置于版本控制下即可。
如果您想通过其他方式共享设置,您需要学习如何创建新的设置层、导入和导出它们。 为此,dotCover 提供了“设置层”对话框,可在 Visual Studio 菜单( )和 dotCover 选项 对话框中(通过点击 管理 按钮)使用。

自定义设置层添加在现有默认层之下。 例如,如果您希望自定义层中的设置应用于所有解决方案,请将其添加到“本计算机”层之下;否则,根据您是否希望覆盖团队共享设置,将其添加到特定解决方案的层之下。
一旦添加了自定义设置层,它会出现在 保存到 选择器中,在 dotCover 选项 对话框中,您可以使用它将修改后的设置保存到自定义层。 您还可以通过 编辑此层 修改此层中的设置。
添加自定义设置层
在 设置层 对话框中,选择您希望添加层的默认层之一。
执行以下操作之一:
点击 添加层
,然后点击 创建设置文件 创建一个新的空设置层,或点击 打开设置文件 包含来自文件系统或任何 URI 的现有设置层。右键点击并在 添加层 选择器中选择相应的命令之一。
根据所选命令,指定新设置层文件的名称和位置,或选择具有 .DotSettings 扩展名的现有设置层文件。
添加的层中的设置根据其在层堆栈中的位置应用,您可以在 设置层 对话框中看到,也就是说,如果某些设置在上层中定义,则使用上层中的值作为最终设置。 如果需要,您可以使用在选择层时可用的 上移 和 下移 按钮在组内重新排列自定义设置层。
作为使用 保存到 按钮在 dotCover 选项 对话框中将修改后的设置保存到特定层的替代方法,您可以打开特定的设置层进行编辑。
编辑特定的设置层
在 设置层 对话框中,选择您想要编辑的设置层。
执行以下操作之一:
点击 编辑层
。右键点击并在上下文菜单中选择 编辑。
双击所需的层。
选项 对话框打开,在对话框顶部显示层的名称及其位置:

请注意,您在此模式下看到的设置值要么取自默认值,要么取自编辑层中定义的值。 如果某个设置未在编辑层中定义,则显示默认设置中的值(例如下图中“设置 B”的值为“蓝色”)。
如果在这种情况下,您需要将“设置 B”的值“蓝色”保存到编辑层中,您需要先以其他值保存设置,然后再次编辑并以所需值保存。

根据需要编辑层中的设置,然后点击 保存 保存更改。
您可以将任何设置层中的特定设置子集导出到一个新的设置文件。 然后可以在另一个 dotCover 实例上使用此文件来应用这些设置。
将设置从设置层导出到文件
在 设置层 对话框中,选择要导出设置的设置层。
执行以下操作之一:
在工具栏上,点击 导入/导出自
,然后点击 导出到文件。右键点击该层,并在上下文菜单中选择 导出到文件。
在打开的 导出到文件 对话框中,指定要导出的设置组,然后点击 确定 ,接着指定设置层文件的名称和位置。
作为 添加自定义设置层 的替代方法,您可以将此自定义层中的部分设置复制到现有的默认层或自定义层之一。
从设置层文件导入设置到设置层
在 设置层 对话框中,选择您希望导入设置的设置层。
执行以下操作之一:
在工具栏上,点击 导入/导出设置
。 根据要导入的文件位置,点击 从文件导入 或 从 URL 导入。右键点击该层。 在上下文菜单中点击 导入自 ,然后点击 从文件导入 或 从 URL 导入。
指定要导入的文件位置。 请注意,如果您选择从 URL 导入,则文件路径应以 UNC 格式指定。
在打开的 从文件导入 对话框中,指定要导入的设置组,然后点击 确定。
dotCover 还允许您将部分设置从一个挂载的设置层复制到另一个。
将设置从一个层复制到另一个层
在 设置层 对话框中,选择您希望复制设置的设置层。
执行以下操作之一:
在工具栏上,点击 将设置复制到
,然后选择目标设置层。右键点击该层,在上下文菜单中选择 将设置复制到 ,然后选择目标设置层。
在打开的 复制到 对话框中,指定要复制的设置组,然后点击 确定。
如果需要,您可以清除保存在特定层中的所有设置。 为此,右键点击该层,并在上下文菜单中点击 重置。
此外,您可以重置所有预定义层中的设置并卸载所有自定义设置层,从而将所有设置恢复为默认值。 为此,请在工具栏上点击 重置所有设置
。
您还可以通过清除旁边的复选框暂时禁用自定义设置层,或右键点击特定的自定义设置层并选择上下文菜单中的 移除 来卸载该层。
将设置升级到新版本
有时,dotCover 的新版本可能会对设置的存储格式进行修改。 在这种情况下,受影响的设置文件会在新版本首次启动时自动升级——dotCover 只是将修改格式的设置添加到设置文件中。 它还会添加一个条目,说明已升级的内容,以防止进一步升级。 例如:
然而,即使设置文件已升级,它仍然可以与旧版本的 dotCover 一起使用(例如,如果您与未升级的团队成员共享此文件),因为已弃用的设置既不会被更改也不会被移除。 此外,这意味着您可以在自动升级的 .dotSettings 文件中 安全地提交更改 到您的 VCS。
这里需要注意的是,当您在更新后回到旧版本,然后使用该旧版本更改某些设置,再返回到新版本时——dotCover 不会再次升级设置。 因此,您更改的一些设置可能会以旧格式保存,并且无法被新版本读取。
因此,如果您(或您的团队)同时使用两个不同版本的 dotCover,您可能需要检查在一个版本中修改的偏好设置是否能在另一个版本中正确读取,如果不能,只需在另一个版本中再次进行相同的修改即可。