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

DMa*_*yer 10 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>
Run Code Online (Sandbox Code Playgroud)

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

cit*_*att 8

这是ReSharper迁移了一些已从一个版本更改为下一个版本的设置的指示器,用于不再次运行迁移.

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

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

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