这对我来说似乎很混乱 - 我正在创建一个类库,并为其中包含的源文件添加所有必要的引用。
现在,蝙蝠,有300多个编译器错误抱怨缺少名称空间。 现在,我刚刚添加了所有的System。*引用后编译库,但这显然不是最好的方法。
即。如果一个类需要using System.Web.Script;
,那么没有System.Web.Script
引用,我怎样才能找出这些引用包含哪个? System.Web
没有。
答案 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。