【问题标题】:How to force a C# root namespace throughout project files for when none is coded?当没有编码时,如何在整个项目文件中强制使用 C# 根命名空间?
【发布时间】:2011-01-16 15:10:02
【问题描述】:

我想对任何未将其内容包装在显式 namespace 中的 .cs 源文件的内容强制使用根命名空间。换句话说,我想将类和其他命名空间级别的结构保留在默认命名空间之外。
(使用 Visual Studio 在 Windows .NET 环境中工作)

在下面的示例中,我想强制 Car 类默认进入 MotorIndustry 命名空间,即使它没有显式编码命名空间。

Vehicle.cs(有命名空间)

namespace MotorIndustry {
    public class Vehicle {
        // ...
    }
}

Car.cs(无命名空间/默认)

public class Car : Vehicle {
    //...
}

有没有办法通过 Visual Studio 中的项目设置、AssemblyInfo.cs 文件或其他方式来完成这种“根命名空间”的修改行为?

我的理解是 VB.NET 有这样的特性,但 C# 的行为不同?

关于我为什么要问这个的一些上下文:我有数百个类,而程序员忘记将命名空间包装在一些周围。当我从其他项目中引用程序集时,它会使用最终导致一些模棱两可的情况的类污染默认命名空间。

【问题讨论】:

  • 不,C# 中没有像 VB.NET 中那样全局命名类文件的能力。 John 有你的答案:第三方重构工具。
  • 我认为 Visual Studio 中的网站项目(不是 Web 应用程序)的独特情况往往不会为 App_Code 特殊文件夹下编写的类生成命名空间,或者至少不会为用户控件和页面生成命名空间,并且我认为这是问题开始的地方。无论如何,我已经开始将所有内容包装在显式名称空间中,甚至用户控制 .ascx 和 asp.net 页面,以便对所有内容进行更“强类型”的访问。随着项目的发展,它更易于管理。

标签: c# .net visual-studio namespaces global-namespace


【解决方案1】:

使用 ReSharper 将类移动到正确的命名空间中。事实上,5.0 版(仍处于测试阶段)允许您在全局范围内更正命名空间。


另一种方法是让其他开发人员修复代码。

【讨论】:

  • +1 @John:我会让其他开发人员修复代码(hint hint)并运行 ReSharper。
  • +1 不要试图适应糟糕的开发人员的马虎。接下来,您需要找到一种方法使 C# 成为不区分大小写的语言。
【解决方案2】:

听起来您正试图在 C# 中复制 VB.Net 的项目命名空间功能。这不是 C# 编译器或 IDE 支持的功能。您将无法通过修改项目文件来创建一个。您需要手动或通过工具将命名空间添加到项目中的每个文件。

【讨论】:

    猜你喜欢
    • 2021-09-29
    • 2022-01-23
    • 2011-02-05
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    • 2012-11-22
    • 1970-01-01
    • 2019-12-31
    相关资源
    最近更新 更多