如何在整个 C# 项目中使用“平面”命名空间

How to use a "flat" namespace in whole C# project

提问人:Gabriel Weidmann 提问时间:7/22/2021 最后编辑:Gabriel Weidmann 更新时间:9/20/2021 访问量:673

问:

我想对我的整个 c# 类库使用相同的命名空间。但新文件的默认行为是使用类似 的命名空间。[Base namespace].[Folder 1].[Folder 2]

Visual Studio 2019 是否有简单的方法或插件可以使所有新文件使用相同的命名空间?所以不管文件夹是什么?[Base namespace]

但只是对于单个项目,我不想更改全局文件模板。

C# visual-studio 命名空间

评论

0赞 zaitsman 7/22/2021
您使用的是什么 IDE?
1赞 Damien_The_Unbeliever 7/22/2021
显然,您不能在项目中使用任何文件夹。(相反,如果您需要使用文件夹来管理复杂性,为什么在源代码中需要它,而在命名空间中不需要它?
0赞 DanielD 7/22/2021
正如其他人已经说过的那样,您应该坚持定义这些命名空间的通用命名规则,这些规则通常会自动反映您的项目结构。如果出于某种原因只想使用简单的命名空间,例如在项目中重用的通用 nuget 包,则只需在项目中查找并替换它,或者使用 resharper。看看这里: stackoverflow.com/questions/8302567/...
0赞 7/22/2021
这回答了你的问题吗?在 Visual Studio 中更改项目命名空间和在文件夹中创建类时更改默认命名空间 (Visual Studio) 和在 Visual Studio 的目录树中移动类后自动更改命名空间
0赞 Gabriel Weidmann 7/22/2021
@zaitsman我认为标签“visual-studio”清楚地表明它是关于 Visual Studio 的;-)

答:

0赞 Michał Turczyn 7/22/2021 #1

尽管评论中提到了所有问题,但有一种简单的方法可以实现这一目标。只需转到项目属性并定义默认命名空间:

enter image description here

现在,每个添加的类都定义了以下命名空间:

using System;
using System.Collections.Generic;
using System.Text;

namespace MyGlobalNamespae
{
    class Class1
    {
    }
}

评论

2赞 DanielD 7/22/2021
这仍会将文件夹名称追加到命名空间。这仅用于项目命名空间的第一部分,但不会替换命名空间生成逻辑。
0赞 Gabriel Weidmann 7/22/2021
@DanielD 是的,这个解决方案与我要求的完全不同。
0赞 Gabriel Weidmann 9/20/2021 #2

我找到了一个我满意的解决方法:

我安装了这个不错的扩展 Visual Studio Namespace Fixer。它允许您为命名空间定义模板,然后可以将其应用于项目中的所有 .cs、.xaml 和其他文件。

在我定义了 的格式下。Options -> Namespace Fixer options -> Use default project namespace{projectRootNamespace}Namespace format

不仅我只需要在项目基本文件夹中选择我的文件和文件夹(在 Visual Studio 中,而不是在 Windows 资源管理器中),右键单击并选择,所有子文件夹中的所有文件都会将其命名空间更改为项目根命名空间:-)Adjust namespaces

如果在 NuGet 库中创建和使用大量类和其他文件,那就太棒了。