问题

我有一个相当涉及Visual Studio解决方案(2010,但不重要)我需要重命名.

我想重命名文件夹以匹配新的解决方案名称,但我无法找到自动重构文件夹名称的方法,并通过每个项目文件将是痛苦的.

有没有官方的方法来做到这一点?或者(更好),是否有免费的工具来实现这一点?

  最佳答案

手动编辑.sln文件

这个方法完全是为了重命名项目的目录,如 Windows Explorer 中所看到的那样。

这个方法不会遇到下面的删除/添加项目文件方法中的问题(引用消失),但如果您的项目处于源控制之下(见下文注释),它可能会导致问题.这就是为什么步骤2(备份)如此重要.

  1. 关闭Visual Studio.
  2. 创建 .sln 文件的备份(可以总是回滚)。
  3. 想象一下,您想将目录“Project1”重命名为“Project2”。
  4. 如果不使用源控件,使用Windows Explorer将文件夹从“Project1”重命名为“Project2”。
  5. 如果使用源控件,使用源控件提供的函数将文件夹从“Project1”重命名为“Project2”.这保留了文件的历史.例如,使用TortoiseSVN,右键单击文件,选择TortoiseSVN .. Rename.
  6. 在 .sln 文件中,将 “Project1” 的所有实例编辑为 “Project2”,使用 NotePad 这样的文本编辑器。
  7. 重启Visual Studio,一切都将像以前一样工作,但项目在另一个目录中.

您还可以看到 手动重命名解决方案 帖子,该帖子描述了这个手动处理

优点

  • 您可以使 Windows Explorer 中的目录与解决方案中的项目名称匹配。
  • 此方法不会从其他项目中删除对此文件的任何引用(相对于Remove / add project file方法的优点,请参阅下面的其他答案).

警告

  • 重要的是在重命名任何内容之前将所有内容备份到 .zip 文件中,因为这个方法可以使用源控制创建问题。
  • 如果您的项目处于源控制之下,它可能会创建问题,如果您重命名文件或者 源控制之外的目录(使用Windows Explorer).如果可以,最好使用源控制框架本身重命名文件,以保存该文件的历史(右键单击检查上下文菜单 – 它可能有一个重命名文件的函数).

更新2014-11-02

ReSharper添加了一个自动化方法来实现与上面的手动方法相同的结果.如果名称空间是用一条丑陋的蓝线下划线,则单击动作金字塔图标:

  • 重命名空间以匹配 Windows Explorer 中的目录名称,或者;
  • 重命名 Windows Explorer 中的目录以匹配名称空间。

在第二种情况下,最终单词定义了 Windows Explorer 中的新目录名称,例如,如果我们将名称空间更改为 ViewModel2,它将提供将文件移动到文件夹 ViewModel2

但是,这不一定会更新源代码控制中的文件,因此您可能仍然需要使用手动方法。

enter image description here

更新2018-01-31

用Visual Studio 2008,2010,2012,2013,2015,2017 Update 1,2,3,4,5测试。

  相同标签的其他问题

visual-studio