在 Eclipse 中,自动完成功能甚至适用于未使用的包或名称空间。这意味着如果我在一个包中有一个名为 DuckWrapper 的类,并且在一个没有导入包 DuckWrapper 的类中我按 ctrl+space,它将显示 DuckWrapper 并在必要时自动导入它的包。
然而,Visual Studio 不会在其自动完成中显示它,除非我首先将它添加到使用列表中。
那可以改变吗?
在 Eclipse 中,自动完成功能甚至适用于未使用的包或名称空间。这意味着如果我在一个包中有一个名为 DuckWrapper 的类,并且在一个没有导入包 DuckWrapper 的类中我按 ctrl+space,它将显示 DuckWrapper 并在必要时自动导入它的包。
然而,Visual Studio 不会在其自动完成中显示它,除非我首先将它添加到使用列表中。
那可以改变吗?
This kind of feature exists in current version of Visual Studio 2019 but it is still experimental.
As you can see in the image above, you can't see the entity Student
from the namespace Test2 that's in another project but if you click button in the bottom left corner of IntelliSense window, you will see this.
Upon accepting Student option that IntelliSense gives, all needed namespaces will automatically be added at the top of your file (or bellow all the existing using statements above the namespace name).
You can turn this option on/off in:
EDIT: I embedded the images instead of just hyperlinking them.
您可以使用 IntelliSense Extender Plugin。对于 Visual Studio 2017:
https://marketplace.visualstudio.com/items?itemName=Dreamescaper.IntelliSenseExtender
对于 VS 2019:
https://marketplace.visualstudio.com/items?itemName=Dreamescaper.IntellisenseExtender2019
它包括解决方案中所有项目的类型以及所有引用包的类型。从 IntelliSense 中选择未导入的类型将自动导入该类型。
这在 Visual Studio 的标准安装中无法更改,因此您需要安装扩展来添加该功能。提供此功能的一个常用扩展是JetBrain 的 ReSharper。这是他们文档中的引用。
使用 Ctrl+Alt+Space 调用 Import Symbol Completion(以前称为 Type Name Completion)。与符号补全(仅补全在当前位置可访问的类型)不同,ReSharper 显示与指定前缀匹配的所有类型,无论它们属于哪个命名空间,并在必要时自动添加适当的命名空间导入指令。在 C# 代码文件中,Import Symbol Completion 在 dot 之后使用扩展方法工作,并放置必要的 using 指令。