将.NET引用与命名空间匹配

时间:2010-04-08 16:19:40

标签: c# asp.net reference

这对我来说似乎很混乱 - 我正在创建一个类库,并为其中包含的源文件添加所有必要的引用。

现在,蝙蝠,有300多个编译器错误抱怨缺少名称空间。 现在,我刚刚添加了所有的System。*引用后编译库,但这显然不是最好的方法。

即。如果一个类需要using System.Web.Script;,那么没有System.Web.Script引用,我怎样才能找出这些引用包含哪个? System.Web没有。

4 个答案:

答案 0 :(得分:2)

是的,命名空间和程序集是.NET中的两个不同概念......它们可以,但不需要共享通用名称。

最好的方法是检查MSDN中丢失的类型(当文本光标位于您缺少的类之上时,在Visual Studio中点击F1)。 MSDN文档将告诉您哪个命名空间以及定义了哪个类型的程序集。

答案 1 :(得分:2)

好吧,编译器会抱怨错过的类,而不是错过名称空间。您必须在MSDN上查找类,您将在那里找到相关的命名空间和程序集。

例如DropDownList

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.dropdownlist%28v=VS.80%29.aspx

在顶部你可以阅读

Namespace: System.Web.UI.WebControls
Assembly: System.Web (in system.web.dll)

答案 2 :(得分:1)

命名空间可以重新打开,因此多个程序集可以在一个命名空间中定义类。

// AssemblyFoo.dll
namespace MyNamespace {
    class Bar {}
}

// AssemblyBaz.dll
namespace MyNamespace {
    class Qux {}
}

对于MyNamespace.Bar,您需要引用AssemblyFoo.dll,对于MyNamespace.Qux,您需要引用AssemblyBaz.dll。您无法仅从命名空间推断出所需的程序集。

最好的办法是查找使用MSDN定义类的位置。

答案 3 :(得分:1)

您还可以使用Visual Studio中的对象浏览器单击命名空间,它将显示程序集及其路径。只要程序集在GAC或Visual Studio中知道它,你应该能够在那里找到它。

您还可以在对象浏览器的搜索框中输入“System.Web.Script”,它会找到命名空间,然后您可以右键单击并说出“转到定义”。它将带您到父级,它将是命名空间/程序集分组,您将看到它所在的.dll。