【问题标题】:Adding the solution name as base of namespace for all projects将解决方案名称添加为所有项目的命名空间基础
【发布时间】:2025-12-15 15:05:01
【问题描述】:

所以我在 Visual Studio 2013 中有这个解决方案。目前解决方案树如下所示:

MySolution
    >MyProjectA
    >MyProjectB
    >MyProjectC

默认是项目文件夹中的每个类都有与项目文件夹名称相同的命名空间。

但我希望每个项目文件夹中的每个类都有一个以解决方案名称开头的命名空间。例如,如果 MyProjectA 中有一个名为 MyClass 的类,我希望它的命名空间为 MySolution.MyProjectA

有没有办法在 Visual Studio 中自动实现这一点?我可以自己去更改所有的命名空间……但我更想看看是否可以自动执行此操作。

【问题讨论】:

  • 不确定是否有真正的内置解决方案,但您可以 Ctrl+F / 快速将所有 namespace MyProjectA 替换为 namespace MySolution.MyProjectA

标签: c# .net visual-studio visual-studio-2013


【解决方案1】:

在每个项目的设置中,每当您将新文件添加到项目中时,都会使用一个默认命名空间。默认值为项目名称,但您可以自定义它。您可以更改它,然后添加的任何新文件都将使用所需的命名空间。

对于任何现有文件,查找和替换可以提供相对快速的清理(查找:namespace MyProjectA -> 替换为:namespace MySolution.MyProjectA,仅在当前项目中搜索)。

【讨论】:

    【解决方案2】:

    下载ReSharper,它有很多这样的功能。安装它,之后您只需将每个项目重命名为 MySolution.ProjectA,B,C 然后右键单击项目并选择选项重构,然后单击调整命名空间。这样就可以解决问题,我在这里看到的唯一一件事是您需要重命名您的项目。

    【讨论】:

    • 我从来没有用过ReSharper,所以我不知道它的局限性是什么,但你应该能够在不重命名项目的情况下更改命名空间名称。 VS 中没有任何内容将命名空间名称限制为与项目名称相同。我的命名空间遵循 OP 制定的模式,名称与命名空间不同。
    • 是的,正如@Jimmy 所建议的那样,我认为您可能需要一个自动流程来执行此操作,以防您的解决方案中有大量项目。