取消嵌套命名空间 C# Visual Studio

unnesting namespace c# visual studio

提问人:yem 提问时间:12/19/2021 更新时间:12/19/2021 访问量:204

问:

我有一个嵌套的 namepace 作为大项目的一部分。DO

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

我需要将命名空间的名称更改为 ,并将嵌套的命名空间更改为 。IDALDalApiIDAL.DODO

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

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

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

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

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

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

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

C# visual-studio 命名空间

评论

0赞 PMF 12/19/2021
这就是像 Resharper 这样的工具的用途......
0赞 Camilo Terevinto 12/19/2021
@PMF 如果 Visual Studio 支持开箱即用并且 OP 已经在使用,您为什么会建议使用 Resharper?Resharper 的速度太慢了,我永远不明白为什么人们会建议用它来做这样简单的事情
0赞 PMF 12/19/2021
@CamiloTerevinto 由于我已经习惯了这么久,我有时再也认不出一个功能是来自 Resharper 还是 VS 本身。许多功能最初也只在 RS 中可用,但后来成为 VS 的一部分。(此外,VS2022 的性能问题似乎基本消失了。

答:

1赞 Trite 12/19/2021 #1

是否还需要更改有效的命名空间?如果没有,您可以简单地切换到完全限定的命名空间,如下所示:IDAL.DO

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

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

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

1赞 Camilo Terevinto 12/19/2021 #2

在 Visual Studio 中,在光标处于 上时,对其执行 + 操作:MyStructCTRL.

enter image description here

然后只需单击“移动到命名空间...”并编写您想要的命名空间,VS 将负责其余的工作:

enter image description here