对“真正的”系统组件的引用在哪里?

时间:2013-10-31 21:01:59

标签: .net

我正在研究我之前在SO(System.Object not defined in VB.Net)上看到的一个问题的答案,我发现了一些看似奇怪的东西。我一直认为,众所周知,类“Object”驻留在“System”命名空间中,是在System.DLL程序集中定义的,或者至少在System.Core.DLL中定义的。但是,当我开始在对象浏览器中搜索时,我了解到对象实际上是在mscorlib.dll中定义的。但是,真正奇怪的是,这个程序集在任何项目的任何地方都没有被引用。为了测试这个,我创建了一个项目并删除了所有引用:

enter image description here

令人惊讶的是(至少对我来说)这样做并没有破坏任何东西。我仍然可以像这样编写一段代码:

Module Module1
    Sub test()
        Dim x As New Object
    End Sub
End Module

没有任何编译错误。有人可以向我解释这个吗?

1 个答案:

答案 0 :(得分:4)

c#和vb编译器自动包含它

最初我说要看C# compiler: /nostdlib option,但正如评论中所述,这个问题意味着某些事情并非如此

mscorlib总是被引用,没有办法,并且其中一个原因在CLR团队的帖子中说明了原因

mscorlib.dll & System.dll

他们的帖子很容易理解,但总结一下 - CLR和mscorlib太紧密,不能分离。