这两者有什么区别?
假设您正在谈论.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
http://msdn.microsoft.com/en-us/library/ms229026.aspx
http://msdn.microsoft.com/en-us/library/ms229048.aspx