如何告诉ReSharper使用系统命名空间排序使用不在顶部?

时间:2012-10-11 01:47:44

标签: resharper visual-studio-2012

Visual Studio可以选择在排序时将系统指令放在顶部。

enter image description here

当此设置取消选中时,通过右键单击并使用组织使用功能对语句进行排序,将系统命名空间按字母顺序放置在所有其他命名空间导入中。 / p>

然而,ReSharper似乎并不尊重这个设置,它在自己的Namespace Imports选项页面上也没有类似的东西。它总是表现得好像您希望系统名称空间位于顶部。当你已经在底部有一些并且让ReSharper建议导入一个命名空间时,这尤其令人讨厌,那么你最终会在列表的两端找到一些。

有什么方法可以解决这个问题吗?或者这只是ReSharper中的一个错误/疏忽?

5 个答案:

答案 0 :(得分:13)

我正在使用ReSharper 7,至少对我来说,ReSharper从Visual Studio选项中获取“系统指令排序选项”。

有时,当VS和ReSharper设置混乱时,它有助于从工具重置Visual Studio设置 - >导入和导出设置 - >重置所有设置。

答案 1 :(得分:8)

我在ReSharper 8下再次测试它,看看它是否已修复,我发现了一些有趣的东西:

  • 如果我现有的名称空间首先有System个项目,那么ReSharper将在它们下面插入新的名称空间。

  • 如果我现有的命名空间在 System项之前至少有一个项,那么ReSharper将按字母顺序插入新的命名空间。

  • 无论设置Visual Studio,ReSharper的行为都是相同的。它只考虑现有的命名空间 - 而不是 Visual Studio的设置。

所以,如果我有以下内容:

using A;
using System;
using Z;

然后,如果我使用来自命名空间B的一个类并使用alt-enter来让ReSharper添加命名空间,那么它最终会被视为:

using A;
using B;
using System;
using Z;

但是,如果我有这个:

using System;
using Z;

我做同样的事情,然后我会得到:

using System;
using B;
using Z;

VS的设置无关紧要。

我认为这也是ReSharper 7中发生的事情,我只是没注意到。

答案 2 :(得分:2)

如果我削减了所有用法,则将它们粘贴在原处,然后进行排序,这似乎符合该选项:

Place 'System' directives first when sorting usings

我正在Visual Studio Community 2017和Resharper 2018.3.4上对此进行测试。

答案 3 :(得分:0)

Screenshot

ReSharper | Options | Code Editing | C# | Syntax Style | Reference Qualification and 'using' Directives | Place 'System.*' and 'Windows.*' namespaces first when sorting 'using' directives

取消选择它。

另请参阅以下ReSharper帮助文档:Code Syntax Style: Namespace Imports - Configure namespace imports preferences

答案 4 :(得分:-1)

对于ReSharper 2019.2.3

ReSharper -> Options -> Code Editing -> C# -> 
Code Style -> Reference Qualification and 'using' Directives 

然后取消选中复选框

? Place 'System.*' and 'Windows.*' namespaces first when sorting 'using' directives