10

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

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

using System;
using System.IO;

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

4

5 回答 5

10

mscorlib.dll包括这两个命名空间中的项目。

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

于 2012-07-19T11:56:50.303 回答
2

不同的程序集可以贡献给同一个命名空间。

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

于 2012-07-19T11:58:11.513 回答
0

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

于 2012-07-19T11:56:16.093 回答
0

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

于 2012-07-19T11:59:11.457 回答
0

另一件需要考虑的事情是,如果您直接通过命令行进行编译,则编译器会通过默认响应文件 (csc.rsp) 解析一组默认开关,包括默认库引用,该文件位于与编译器。您能够从基类库导入命名空间而无需在编译时显式引用它们的事实是因为它们包含的程序集默认包含在您的程序中。要在命令行更改此行为,您可以使用 /nostdlib 开关强制它不包含 mscorlib.dll,或者您可以使用 /noconfig 让它完全忽略整个默认响应文件。另外,我不太确定您所说的 system.dll 是什么意思,因为您提到的命名空间包含在 mscorlib.dll 中。另外,我认为“

于 2013-04-21T17:00:03.573 回答