Visual Studio可以选择在排序时将系统指令放在顶部。
当此设置取消选中时,通过右键单击并使用组织使用功能对语句进行排序,将系统命名空间按字母顺序放置在所有其他命名空间导入中。 / p>
然而,ReSharper似乎并不尊重这个设置,它在自己的Namespace Imports选项页面上也没有类似的东西。它总是表现得好像您希望系统名称空间位于顶部。当你已经在底部有一些并且让ReSharper建议导入一个命名空间时,这尤其令人讨厌,那么你最终会在列表的两端找到一些。
有什么方法可以解决这个问题吗?或者这只是ReSharper中的一个错误/疏忽?
答案 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)
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 -> Options -> Code Editing -> C# ->
Code Style -> Reference Qualification and 'using' Directives
然后取消选中复选框
? Place 'System.*' and 'Windows.*' namespaces first when sorting 'using' directives