ReSharper 2017:忽略结构的文件布局规则

ReSharper 2017: Ignore File Layout Rules for Structs

我有一个自定义文件布局类型模式,它根据我定义的一组特定首选项来格式化我的源文件。当我 运行 代码清理时,格式会自动应用。

我遇到的问题是:对于我用于 P/Invoke 的结构,成员的顺序很重要。如何让 ReSharper 忽略对结构应用我的文件布局类型模式?

我认为以前版本的 ReSharper 曾经有这个功能,但在 ReSharper 2017 中,我似乎不知道该怎么做。有什么建议吗?

在开箱即用的文件布局中,有一个名为 "Non-recordable types" 的特殊模式,它完全符合您的要求:

它内部有 "Struct" 类型,主模式不会触及与该模式匹配的任何实体。

您的自定义文件布局似乎没有这样的模式。

但是,您可以将以下 XML 代码添加到选项中的 <Patterns> 标记以将其取回(ReSharper | 选项 | 代码编辑 | C# | 文件布局 | XAML 按钮在顶部)

  <TypePattern DisplayName="Non-reorderable types">
    <TypePattern.Match>
      <Or>
        <And>
          <Kind Is="Interface" />
          <Or>
            <HasAttribute Name="System.Runtime.InteropServices.InterfaceTypeAttribute" />
            <HasAttribute Name="System.Runtime.InteropServices.ComImport" />
          </Or>
        </And>
        <Kind Is="Struct" />
        <HasAttribute Name="JetBrains.Annotations.NoReorderAttribute" />
        <HasAttribute Name="JetBrains.Annotations.NoReorder" />
      </Or>
    </TypePattern.Match>
  </TypePattern>