【问题标题】:unnesting namespace c# visual studioc# Visual Studio 取消嵌套命名空间
【发布时间】:2022-01-21 11:41:06
【问题描述】:

作为一个大项目的一部分,我有一个嵌套的命名空间 DO

namespace IDAL
{
    namespace DO
    {
        public struct MyStruct
        {
            // Code
        }
    }
}

我需要将IDAL 命名空间的名称更改为DalApi,并将嵌套命名空间IDAL.DO 的名称更改为DO

使用 Visual Studio 重命名选项,第一部分非常简单。

我在第二部分遇到了更多困难。我无法使用 Rename 选项来提取命名空间并使其成为非嵌套命名空间。

我试着像这样删除外部命名空间,

    namespace DO
    {
        public struct MyStruct
        {
            // Code
        }
    }

但是我需要开始修复所有引用命名空间的时间(即IDAL.DO.WeightCategory - 其中 WeightCategory 是一个枚举需要更改为 DO.WeightCategory 仅举一个例子)。虽然这似乎可行,但似乎这是一项艰巨的工作,可能有一个更简单的解决方案。

我尝试使用 Ctrl+H 搜索和替换功能来尝试替换发生这种情况的所有实例,但它似乎没有解决问题(它被设置为替换整个解决方案)。

是否有 Visual Studio 2019 工具可以轻松地将嵌套命名空间更改(重构)为非嵌套命名空间?

【问题讨论】:

  • 这就是 Resharper 等工具的用途...
  • @PMF 如果 Visual Studio 开箱即用地支持并且 OP 已经在使用 Resharper,为什么你会建议使用 Resharper? Resharper 太慢了,我不明白为什么人们建议它用于这样简单的事情
  • @CamiloTerevinto 因为我已经习惯了这么久,所以我有时不知道某个功能是来自 Resharper 还是来自 VS 本身。许多功能最初也仅在 RS 中可用,但后来成为 VS 的一部分。 (此外,VS2022 似乎基本解决了性能问题。)

标签: c# visual-studio namespaces


【解决方案1】:

在 Visual Studio 中,将光标放在 MyStruct 上,在其上执行 CTRL+.

然后只需单击“移动到命名空间...”并编写您想要的任何命名空间,其余的将由 VS 处理:

【讨论】:

    【解决方案2】:

    您是否还需要更改有效的命名空间IDAL.DO?如果不是,您可以像这样简单地交换到完全限定的命名空间:

    namespace IDAL.DO
    {
        public struct MyStruct
        {
            // Code
        }
    }
    

    如果您确实想将完整的命名空间更改为简单的DO,那么重构工具确实是您需要使用的。以下链接应该可以帮助您开始这方面的工作:

    https://dev.to/gopkumr/adjust-namespaces-automatically-visual-studio-2019-1f0b https://docs.microsoft.com/en-us/visualstudio/ide/refactoring-in-visual-studio?view=vs-2022 https://docs.microsoft.com/en-us/visualstudio/ide/reference/extract-method?view=vs-2022 https://docs.microsoft.com/en-us/visualstudio/ide/reference/move-type-to-matching-file?view=vs-2022

    【讨论】:

      猜你喜欢
      • 2011-03-13
      • 1970-01-01
      • 1970-01-01
      • 2015-09-03
      • 2011-01-02
      • 2021-01-04
      • 1970-01-01
      • 2019-08-03
      • 2011-01-06
      相关资源
      最近更新 更多