为什么我不需要引用“System.dll”来使用“System”命名空间?

时间:2012-07-19 11:54:32

标签: c# visual-studio-2010

我正在处理指定“不使用任何外部库”的作业。所以我创建了一个c#应用程序,我做的第一件事是默认删除所有dll的引用...包括“System.dll”。

但是,我仍然可以将其添加到我的代码中:

using System;
using System.IO;

我很好奇为什么我不需要在我的项目中使用System.dll作为参考来执行此操作。谢谢!

5 个答案:

答案 0 :(得分:10)

mscorlib.dll包含这两个名称空间中的项目。

您需要右键单击项目>属性>构建>高级...并选中“不要引用mscorlib.dll”以删除此引用。

答案 1 :(得分:2)

不同的程序集可以为同一名称空间做出贡献。

即使您没有引用System.dll,您仍然引用(隐式)mscorlib.dll,它为System命名空间提供了许多类型。

答案 2 :(得分:0)

这些引用可能在您的Web.configMachine.config文件中定义,因此默认情况下会包含这些引用。

答案 3 :(得分:0)

这些是默认库。我认为你的问题是“不要使用第三方dll”

答案 4 :(得分:0)

另一件需要考虑的事情是,如果您直接通过命令行进行编译,编译器会通过位于其中的默认响应文件(csc.rsp)来解析默认的一组开关,包括默认库引用。与编译器相同的目录。您可以从基类库导入名称空间而无需在编译时显式引用它们,这是因为默认情况下它们的包含程序集包含在您的程序中。要在命令行中更改此行为,可以使用/ nostdlib开关强制它不包含mscorlib.dll,或者可以使用/ noconfig让它完全忽略整个默认响应文件。另外,我不太清楚system.dll的含义,因为你提到的命名空间包含在mscorlib.dll中。另外,我认为通过“外部库”,您的教练必须具有任何可以帮助您解决问题的第三方组件。 .NET SDK中包含的任何内容都将更像是一个框架库。除非你的老师非常苛刻,并希望你重新发明轮子:P