在 Visual Studio 中一步用文件名重命名类

Posted

技术标签:

【中文标题】在 Visual Studio 中一步用文件名重命名类【英文标题】:rename class with file name in one step in Visual Studio 【发布时间】:2013-12-13 04:39:02 【问题描述】:

我是一名多年的 Java 程序员,但目前我使用 C# 编写代码。我习惯了,当我更改文件名时,类名也会更改,反之亦然。这在我的 Visual Studio 中不起作用。我必须分别重命名类名和文件名,这有时对我来说很烦人,因为我总是忘记它,所以导致我有不同的类名和文件名。 Visual Studio 中是否有选项可以一步完成重命名?

【问题讨论】:

如果您先重命名文件,您应该会收到一个问题,您是否也想更改类名。 文件名和类名是独立的——它们不需要匹配 @mehow:将文件与类名匹配是一个好习惯 但这不是必须的。有些语言要求您保持文件名与类同名,但 c# 很灵活 加油 M$ -- 到 VS 2017 年,这应该可以按预期工作。如果您重命名文件并被提示重命名关联的类,它应该反向工作。 VS 2017 具有全新且非常酷的符号重命名功能,可让您在原地重命名。很容易忘记,如果你为 classes 这样做,它也不会重命名文件。让我发疯。 【参考方案1】:

重命名文件可以正常工作 - 它会提供更改代码以匹配:

如果您重命名该类,那么 - 实际上,默认情况下不会发生这种情况。注意,两者实际上没有必要匹配。但归根结底,重命名只是 f2 的距离。

【讨论】:

@MarcGravell - 由于某种原因,这在 vs2017 中不再一致。有些文件有效,有些则无效,根据我的观察,文件的大小似乎无关紧要。 在 VS 2017 中不会发生。 这在 VS 2019 中不会发生,这太令人沮丧了,我 100% 确定我在旧版本中也能正常工作。 注意 VS 2019,截至今天,它仍然有效,但不适用于 .NET Standard 或 .NET Core 项目,此处记录:docs.microsoft.com/en-us/visualstudio/ide/reference/…“此重构尚不适用于 .NET Standard 和.NET Core 项目。” 要撤消此设置:工具 -> 选项 -> 项目和解决方案 -> 常规 -> 启用/提示符号重命名。【参考方案2】:

截至Visual Studio 2015 Preview 5,“快速操作和重构”上下文菜单包含“将文件重命名为 [class].cs”命令。

【讨论】:

【参考方案3】:

当复制的文件在同一个文件夹中并且类名相同时,它似乎工作(如果您只是复制文件,它将是) .我认为原因可能是重命名不区分新复制文件中的类和原始文件(参见@xMichal 下面的评论)。

快速的解决方案是将文件(我使用 ctrl+拖动)复制到附近的文件夹中,重命名,然后将其移回。

另一个选项(可能是 Resharper 特定的)是重命名复制文件中的类(和构造函数),然后使用工具提示选择性地重命名文件以匹配。

【讨论】:

【参考方案4】:

ReSharper 在 Refactor 上下文菜单上有 MoveTypesIntoMatchingFiles 菜单选项,它似乎可以解决问题。只是如果你在同一个文件中有多个类,它们也会被移动到单独的文件中,但无论如何这在大多数情况下应该是一件好事。

【讨论】:

【参考方案5】:

安装名为 Reshaper 的超棒的 Visual Studio 插件。 它做到了这一点,还有很多其他的好东西。 免费 30 天,然后是费用,但绝对值得。

【讨论】:

关闭,不过它是 Resharper。【参考方案6】:

如果您“重构”某些内容,则在使用该文本或名称的任何地方都会更改名称,因此您不必在每次使用名称时都跟进更改名称。但是,您不能对项目之外的对象执行此操作,例如:文件名。

【讨论】:

现在我发现,当您重命名文件时,它可以工作。但是,当您在文件中重命名类时,所有引用都会更改,而不是文件名。这是我的问题。

以上是关于在 Visual Studio 中一步用文件名重命名类的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 数据库项目重命名列

在Visual Studio 2010中一次封装多个字段

怎么将visual studio项目打包生成dll文件

Visual Studio 将项目移动到不同的文件夹

一步用Github创建一个新的文件夹!

Visual Studio Code - 在所有 ES6 导入中应用重命名文件重构