如果通常在存储库的结构中完成任何操作以反映已部署的单元,该怎么办?

时间:2020-03-05 18:51:14  来源:igfitidea点击:

这是该问题的后续措施:

解决方案中的文件夹是否应与名称空间匹配?

关于这个问题的共识是一个合格的"是":也就是说,通常==文件夹==命名空间,而不是从容不迫的(java要求的方式)。

确实,这就是我设置项目的方式。

但是设置源代码管理使我对当前的文件夹结构犹豫不决。与.NET Framework一样,我项目中的名称空间并不总是一对一匹配已部署的单元。说你有

lib             -> lib.dll
lib.data        -> lib.dll
lib.ecom        -> lib.ecom.dll
lib.ecom.paypal -> lib.ecom.paypal.dll

换句话说,子名称空间可能会或者可能不会随父一起提供。

那么,将部署在一起的名称空间以任何方式进行分组吗?

顺便说一句,我不仅仅使用VS或者NAnt老式的构建批处理。

解决方案

回答

我通常不会真正考虑这个问题,只是做"感觉正确的事",但通常我最终会使用非常符合以下策略的名称。

就像我们似乎正在做的那样,我将在树中使用最高的通用命名空间作为.dll名称。

带有lib和lib.data,这就是lib,因此dll称为lib。对于lib.ecom和lib.ecom.paypal,这是lib.ecom,因此dll称为ecom。

在某些情况下,我们需要多考虑一些事情,例如,我们有以下名称空间(警告,简单的示例即将出现),并且我们希望将它们分为两个dll。

myapp.view
myapp.presentation

myapp.model
myapp.dataaccess

我们不能使用myapp,因为那样我们将有两个myapp程序集。在这种情况下,我使用最合适的名称空间名称。如果这些命名空间最重要,则第一个可以称为myapp.presentation,第二个可以称为myapp.model。