两者之间有什么区别?
答案 0 :(得分:38)
假设您正在谈论.NET(与Visual Studio相关),那么根命名空间就是您在visual studio项目中创建的每个类将成为其中的一部分。它也是在项目文件夹中创建类时自动分配的任何子命名空间的基础。
因此,使用ACMECorp.Bombs的基本命名空间,所有类都将成为ACMECorp.Bombs命名空间的一部分,因此类GravityBomb将具有ACMECorp.Bombs.GravityBomb的全名。在名为GuidedBombs的项目文件夹中创建的名为FlyingBomb的类将具有完整类型名称ACMECorp.Bombs.GuidedBombs.FlyingBomb。
程序集名称只是编译文件的名称,您的代码将编译为可执行文件或库等...
我经常看到的问题是如果您的程序集名称与根名称空间相同,并且与项目名称相同(再次在visual studio中)。我曾经认为你应该有一个项目名称与程序集名称相同,与root命名空间相同,就像visual studio的默认名称一样。但是,如果你需要进行一些重大的重构和重命名,这可能会成为一个痛苦,特别是如果你使用源代码控制(因为你应该开始重命名项目文件夹)。
我的建议是您的项目名称只是项目内容的描述性名称。您的程序集名称应包含技术区域和组件描述,或公司名称和技术区域(取决于您的优先权),并且您的根命名空间应如Microsoft命名标准所述:
项目:生物识别设备访问
汇编:BiometricFramework.DeviceAccess.dll
命名空间:ACME.BiometricFramework.DeviceAccess
您的一些参考资料:
http://blogs.msdn.com/brada/archive/2003/04/19/49992.aspx