3

我正在使用这个 NetResource 类将文件发送到网络驱动器,它看起来像这样:

[StructLayout(LayoutKind.Sequential)]
public class NetResource
{
    public ResourceScope Scope;
    public ResourceType ResourceType;
    public ResourceDisplayType DisplayType;
    public int Usage;
    public string LocalName;
    public string RemoteName;
    public string Comment;
    public string Provider;
}

现在,这些字段的顺序保持不变非常重要,正如StructLayout属性所暗示的那样。

但是,当有人运行 resharper 清理时,resharper 决定移动字段,这会破坏代码。

有什么方法可以告诉 rehsarper 不要惹它?我觉得如果我不能做到这一点,那么最终有人会破坏代码并且不知道去哪里找。

但我认为一个平庸的解决方案是创建一个可以检查布局是否符合预期的单元测试。

编辑:我已经看到了这个答案,但它已经过时了,需要更新更清晰的设置。我也不能保证同事使用这种重新锐化器设置。我正在寻找一种将其添加到代码中的方法,就像您可以做的那样// ReSharper disable once InconsistentNaming

4

1 回答 1

3

我在这里看到了几个解决方案:

  • NoReorderAttribute您可以使用JetBrains.Annotations标记该类(有几种方法可以将它们添加到项目中)。然后 ReSharper 将停止对标记代码实体内的成员重新排序。
  • 它主要是关于已经提到的答案,我将向您展示如何在最后的 ReSharper 构建中获得相同的东西。您只需在 ReSharper | 中将“System.Runtime.InteropServices.StructLayoutAttribute”添加到“Non-reorderable types”模式即可。选项 | 代码编辑 | C# | 文件布局。

步骤1: 在此处输入图像描述

第2步:在此处输入图像描述

第 3 步:在此处输入图像描述

第4步:在此处输入图像描述

第 5 步:在此处输入图像描述

为确保您的同事在 ReSharper 中使用相同的设置,请将此更改保存到解决方案团队共享层Save To位于“选项”对话框的底部)。然后,如果您的任何同事打开解决方案,ReSharper 将自动使用该层的设置,无需额外操作。

于 2018-11-09T13:57:33.617 回答