我可以使用intellisense将语句using System.Configuration;
添加到我的代码中,但是当我访问类型ConfigurationManager
时,我无法获得任何智能感知。
为什么intellisense在输入using指令时有效,但在从该命名空间指定类型时不起作用?
using System.Configuration;
namespace TestDBMSConnection
{
class Program
{
static void Main(string[] args)
{
var dataProviderName = ConfigurationManager.AppSettings["provider"];
}
}
}
我可以通过添加对System.Configuration的引用来修复此问题,但我不明白为什么我不需要为intellisense执行此操作以使用using指令。
答案 0 :(得分:3)
命名空间中的类不需要位于同一个程序集中。
System.Configuration命名空间中的某些类位于System.dll(例如SettingsBase)中,而其他一些类位于System.Configuration.dll中(例如ConfigurationManager)。
IntelliSense只能建议引用程序集中的类和名称空间。因此,如果您引用了System.dll但未引用System.Configuration.dll,则IntelliSense可以建议位于System.dll中的System.Configuration命名空间和System.Configuration类,但不能建议位于System.Configuration.dll中的那些。
IntelliSense也无法知道某个类可能位于哪个未引用的程序集中。因此,您必须先手动引用System.Configuration.dll,然后才能使用它。
答案 1 :(得分:2)
因为using
的intellisense会显示已知命名空间的列表。并且已引用System.Configuration
命名空间(此命名空间中的某些类位于system.dll或mscorlib.dll中),而ConfigurationManager
类位于未引用的System.Configuration.dll中,并且因此intellisense不知道它。