Resharper团队设置文件中的IsMigrationApplied元素是什么?

时间:2013-12-18 19:43:13

标签: version-control resharper

我刚刚升级到ReSharper 8.1.23.546,它为我们的团队设置文件添加了一个新密钥:

    <s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateBlankLinesAroundFieldToBlankLinesAroundProperty/@EntryIndexedValue">True</s:Boolean>

这是什么,为什么要将它添加到团队设置文件中?当它存储在版本控制中并且尚未升级到此版本时,是否会引起其他开发人员的问题?

1 个答案:

答案 0 :(得分:8)

这表明ReSharper迁移了一些已从一个版本更改为下一个版本的设置,并且用于不再次运行迁移。

在这种情况下,ReSharper 8.0引入了一些新的格式化选项 - 属性/自动属性周围的空行数,以及单行属性/自动属性周围的空行数。我不确定,但是看看事情,可以合理地假设ReSharper 7在格式化属性时使用了字段周围的行数。

如果您有全新安装,介绍这些新选项并不重要 - 一切都将是默认设置,并且不会将任何内容写入设置文件。但是,如果您之前已经自定义了字段周围的空行数,那么引入这些新选项将改变现有行为,因为格式化程序将使用新的默认选项,而不是旧的自定义值。因此,迁移器运行并检查字段周围的行数是否为默认值以外的值。如果是,它会检查您是否已经编辑了属性周围的行数。只要它们仍设置为默认值,它会将(默认)值覆盖为与字段周围的行数相同 - 它会迁移先前使用的字段值以覆盖属性的默认值。然后,它会添加迁移指示符以确保迁移器不再运行,否则您将永远无法为字段的属性和非默认格式设置默认格式。

至于为什么它在团队设置中,我认为这是因为自定义字段值也在团队设置文件中。由于此文件是共享的,因此仅迁移值一次是有意义的,因此指示符也应该位于共享文件中。与团队分享这一点没有任何危险。