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

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

【问题讨论】:

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

标签: c# visual-studio-2010 refactoring rename


【解决方案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】:

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

        【讨论】:

        • 现在我发现,当您重命名文件时,它可以工作。但是,当您在文件中重命名类时,所有引用都会更改,而不是文件名。这是我的问题。
        猜你喜欢
        • 2014-07-03
        • 2017-12-20
        • 1970-01-01
        • 2012-07-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多