根命名空间和程序集名称之间的区别

时间:2008-11-24 13:13:25

标签: .net namespaces assemblies

两者之间有什么区别?

1 个答案:

答案 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

http://msdn.microsoft.com/en-us/library/ms229026.aspx

http://msdn.microsoft.com/en-us/library/ms229048.aspx