2013-06-05 219 views
0

基本上,我开发了一个小型库,其中包含一些用于我所有项目中的常用功能。出于某些政治原因,我无法为该库选择一个通用名称(包括名称空间和程序集名称)。通常,它必须包含企业名称,如下所示:Enterprise.ProjectName.XXX.YYY动态更改名称空间和程序集名称

目前,我正在做我的库的副本,然后我用Visual Studio手动重命名这些名称空间,最后我重新编译了整个事情。 所以我的问题如下:是否可以创建一个小程序,将程序集作为输入,将所有名称空间从MyLibrary.XXX.YYY重命名为Enterprise.ProjectName.XXX.YYY以及程序集名称?

要遵循什么步骤?

[编辑]

生成装配自动似乎很多工作。我会像我一样使用resharper和/或CTRL + ALT + F。感谢您的回答...

回答

1

一些选项:

  1. 如果要复制您的库中的全部源代码到新的项目中,你可以使用重构工具像ReSharper的“调整命名空间”。这是一个非常快速和安全的重构。

  2. 如果您只是需要避免运送内部命名的程序集,则可以在生成后步骤中使用ILMerge'隐藏'内部程序集。如果这只是二进制输出目录中最后的程序集名称的感知问题,这是可行的。

  3. 通过将您的内部库描述为与任何其他第三方依赖关系无差别来处理政治层面的问题。那么命名不再是一个问题。如果您要将此库的源代码发送给多个客户端,这可能会解决其他问题,因为它说明您并未将“共享”代码的完全所有权交给每个客户端。否则,他们可能会争辩说,您不允许在其他客户的项目中使用该“共享”代码,因为它明确归他们所有,企业名称在名称空间中。

3

您可以使用Mono的Cecil项目来拆卸组件,检查每个类型,使用新的名称空间重命名或重新创建类型,并生成结果程序集。这就是说,使用像Resharper这样的工具可以让代码库中的rename namespaces correctly更简单。