【问题标题】:Proper alternative for the unreliable Search and Replace of Visual Studio?不可靠的 Visual Studio 搜索和替换的正确替代方案?
【发布时间】:2010-02-04 21:19:32
【问题描述】:

今天我真的很想知道为什么我坚持了这么多年而没有主动抱怨它。进行“在解决方案的所有文件和文件夹中搜索和替换” 是我经常需要做的事情,尤其是。当重构工具让我失望时。不幸的是,“所有文件夹和文件” 表示“一些项目和一些其他文件”。值得注意的是,解决方案文件夹、完整网站和 csproj/vbproj/sln 文件中的未连接文件将被跳过。

此外,仅搜索通常会发现比替换替换更多的命中(例如,一个 csproj 仅在其项目被卸载时被替换)。

好吧,抱怨够了:任何人都知道一个好的插件或一个很好的有价值的技巧,可以在解决方案的所有文件和文件夹中进行真正的搜索和替换?我可以依靠什么?

(编辑)
PS:经过深思熟虑:只有在文件夹列表可以包含排除过滤器(即排除所有 .svn 文件和目录)时,让您的系统处于 Subversion 或其他源代码控制系统下才会进行完整搜索。不幸的是,据我所知,提供的解决方案无法做到这一点。

【问题讨论】:

  • 我一直在使用 Visual Studio,从来没有遇到过这些问题,至少自 2002 年以来没有。你做错了什么并指责该工具。
  • 可能。试试这个:打开一个包含 VB 和 C# 代码文件夹的网站(请注意:不是 Web 项目!)以及一些正常的其他项目的解决方案。选择正常项目之一。点击 Ctrl-Shift-H,选择整个解决方案并替换,例如,您的公司名称。您会看到网站的未打开文件不会被替换。当焦点在网站上时,有些东西是,有些东西是不会被取代的。通常不搜索非代码文件(txt、日志)。也许我做错了什么,但我在 2005 年和 2008 年遇到过这种情况。我认为 S&R 是一种“智能”搜索(如 Windows S&R)太聪明了。
  • 自动重构方法重命名也会出现同样的问题,除了 C++ 之外,这也是非常有问题的,并且一直存在。问题在于对无类型变量或方法名称是字符串的方法的延迟调用(即,ASPX/ASCX 中的引用事件、反射等)。我可以理解这是错误的,类型系统无法知道。但是随后进行替换所有 S&R 应该可以解决问题,但事实并非如此。最值得注意的是网站(同样:不是网络项目)。

标签: visual-studio ide plugins add-in


【解决方案1】:

虽然它不是 Visual Studio Notepad++ 的插件,但在文件中的查找(和替换)功能似乎很可靠。

您甚至可以获得代码的语法高亮显示 - 尽管默认情况下不适用于 aspx 文件。不过,this post 会告诉你如何让它工作。

更新

您可以在 Visual Studio 中进行更全面的搜索和替换。

Ctrl+Shift+H 向上弹出对话框。

然后选择“查找范围”下拉菜单旁边的... 按钮以获取“选择搜索文件夹”对话框。

选择您的文件夹,然后进行搜索和替换(甚至只是搜索)。

【讨论】:

  • 谢谢,但有几个工具(V、UltraEdit、Notepad++、CodeWarrior,甚至 Eclipse)都具有出色的 S&R。我只是希望能在 VS 中工作。也许我应该自己写一个插件?应该没那么难……
  • 啊,是的,忘记了。它使用了文件夹集的概念,如果我没记错的话,让它工作起来很麻烦,但我可能只需要学习来使用它。如果它有效并且不需要花费一天的大部分时间来设置,那么它将是一个很好的替代品。注意*这里搜索的是VS安装文件夹,不是当前的解决方案或执行文件夹。
  • 在一个特定的用例场景中,它使用... 从 3 个匹配行(整个解决方案中的正常 S&R)变为 22 个匹配行。我想这几乎总结了它;-)。发送!
  • 使用“...”按钮可以解决问题,“整个解决方案”不适用于 csproj 文件。
【解决方案2】:

我对“整个解决方案”也有同样的问题。 事实上,它并不是有效的“完整”,这就是重点。 我不需要学习如何使用该工具。有适合我的工具还是我适合工具? 这很简单——“整个”对我来说意味着“整个”,但对功能开发人员来说却不是。

现在我不使用“整个解决方案”,但我每次都用路径替换它。它并不完美,因为它可能会搜索解决方案之外的目录中的其他文件,但它更可靠。

【讨论】:

    【解决方案3】:

    您可以使用VS Command Shell 并让Windows 来执行。即使您不将它用于 S&R,也很高兴拥有。

    【讨论】:

    • +1 表示一个有趣的想法。它可能会为我现在做的 Windows shell 节省很多时间(并且 findstr 远远胜过 Windows 自己的搜索,我从来不理解,但那是另一回事了)
    【解决方案4】:

    我同意它不是世界上最好的搜索工具,但我从来没有遇到过你描述的任何问题。

    您暗示无法过滤在 Visual Studio 中搜索的文件,并且不会搜索未在您的解决方案中引用的磁盘上的文件。嗯,那是因为您要求 Visual Studio 这样做 - 我认为您需要学习如何更好地使用该工具,因为它可以很好地处理这些情况。

    您可以将搜索设置为针对解决方案、特定项目、当前项目、仅打开文档、当前文档,或使用文件名过滤器列表搜索驱动器上的任何文件夹层次结构,以精确选择扫描的内容.只需在组合框中选择预设,即可保存这些设置,然后在需要时使用它们。设置它的用户界面非常糟糕,但是一旦设置它就可以很好地工作。例如,我经常使用“整个代码库”来搜索我的驱动器,而不是“整个解决方案”,它只搜索我的解决方案中的文件。或“所有 XML 文件”。或“所有源文件但没有标题”。等等。

    如果您在扫描打开的项目时遇到问题,请不要 - 只需运行另一个没有加载解决方案的 VS 实例。尝试使用 VS 的一个实例来处理所有事情(在任务之间切换时需要重新配置所有窗口布局)的想法坦率地说让我感到困惑。

    【讨论】:

    • 我的抱怨是关于“整个解决方案”的搜索,但我写的时候并没有意识到这一点。我知道搜索的类型(但忘记了文件夹组的神秘方法)。由于我最近在网站上工作很多(不是网络项目!),所以发生了奇怪的事情:当当前 prj 是一个网站时,搜索“整个解决方案”取代了搜索“当前项目”。我的猜测是,由于“网站”实际上不是一个项目,因此没有正确搜索。
    • 引用“坦率地说让我感到困惑。”:我也是。它让它变得很慢。也许我应该更频繁地切换到单项目 IDE 实例,但我已经习惯了……
    猜你喜欢
    • 1970-01-01
    • 2011-12-12
    • 2019-05-25
    • 2011-04-20
    • 2010-11-03
    • 1970-01-01
    • 1970-01-01
    • 2011-04-25
    • 2022-01-09
    相关资源
    最近更新 更多