【问题标题】:How to exclude designer.cs from Visual Studio file search如何从 Visual Studio 文件搜索中排除 Designer.cs
【发布时间】:2010-12-08 10:55:27
【问题描述】:

在 Visual Studio 2005/8 中进行搜索时,是否可以排除特定类型的 .cs 文件?

示例: 在重构场景中,我可能会搜索以识别代码中的字符串文字,以便我可以将它们重构为常量等。但是,*designer.cs 文件充满了我不想处理的字符串文字,但它们出现在我的搜索中并污染了结果集。

我通常搜索 *.cs...

如何忽略 *.designer.cs?

【问题讨论】:

标签: visual-studio search


【解决方案1】:
*a.cs;*b.cs;*c.cs;*d.cs;*e.cs;*f.cs;*g.cs;*h.cs;*i.cs;*j.cs;*k.cs;*l.cs;*m.cs;*n.cs;*o.cs;*p.cs;*q.cs;*s.cs;*t.cs;*u.cs;*v.cs;*w.cs;*x.cs;*y.cs;*z.cs;*_.cs;*..cs;*ar.cs;*br.cs;*cr.cs;*dr.cs;*fr.cs;*gr.cs;*hr.cs;*ir.cs;*jr.cs;*kr.cs;*lr.cs;*mr.cs;*nr.cs;*or.cs;*pr.cs;*qr.cs;*rr.cs;*sr.cs;*tr.cs;*ur.cs;*vr.cs;*wr.cs;*xr.cs;*yr.cs;*zr.cs;*_r.cs;*.r.cs;*aer.cs;*ber.cs;*cer.cs;*der.cs;*eer.cs;*fer.cs;*ger.cs;*her.cs;*ier.cs;*jer.cs;*ker.cs;*ler.cs;*mer.cs;*oer.cs;*per.cs;*qer.cs;*rer.cs;*ser.cs;*ter.cs;*uer.cs;*ver.cs;*wer.cs;*xer.cs;*yer.cs;*zer.cs;*_er.cs;*.er.cs;*aner.cs;*bner.cs;*cner.cs;*dner.cs;*ener.cs;*fner.cs;*hner.cs;*iner.cs;*jner.cs;*kner.cs;*lner.cs;*mner.cs;*nner.cs;*oner.cs;*pner.cs;*qner.cs;*rner.cs;*sner.cs;*tner.cs;*uner.cs;*vner.cs;*wner.cs;*xner.cs;*yner.cs;*zner.cs;*_ner.cs;*.ner.cs;*agner.cs;*bgner.cs;*cgner.cs;*dgner.cs;*egner.cs;*fgner.cs;*ggner.cs;*hgner.cs;*jgner.cs;*kgner.cs;*lgner.cs;*mgner.cs;*ngner.cs;*ogner.cs;*pgner.cs;*qgner.cs;*rgner.cs;*sgner.cs;*tgner.cs;*ugner.cs;*vgner.cs;*wgner.cs;*xgner.cs;*ygner.cs;*zgner.cs;*_gner.cs;*.gner.cs;*aigner.cs;*bigner.cs;*cigner.cs;*digner.cs;*eigner.cs;*figner.cs;*gigner.cs;*higner.cs;*iigner.cs;*jigner.cs;*kigner.cs;*ligner.cs;*migner.cs;*nigner.cs;*oigner.cs;*pigner.cs;*qigner.cs;*rigner.cs;*tigner.cs;*uigner.cs;*vigner.cs;*wigner.cs;*xigner.cs;*yigner.cs;*zigner.cs;*_igner.cs;*.igner.cs;*asigner.cs;*bsigner.cs;*csigner.cs;*dsigner.cs;*fsigner.cs;*gsigner.cs;*hsigner.cs;*isigner.cs;*jsigner.cs;*ksigner.cs;*lsigner.cs;*msigner.cs;*nsigner.cs;*osigner.cs;*psigner.cs;*qsigner.cs;*rsigner.cs;*ssigner.cs;*tsigner.cs;*usigner.cs;*vsigner.cs;*wsigner.cs;*xsigner.cs;*ysigner.cs;*zsigner.cs;*_signer.cs;*.signer.cs;*aesigner.cs;*besigner.cs;*cesigner.cs;*eesigner.cs;*fesigner.cs;*gesigner.cs;*hesigner.cs;*iesigner.cs;*jesigner.cs;*kesigner.cs;*lesigner.cs;*mesigner.cs;*nesigner.cs;*oesigner.cs;*pesigner.cs;*qesigner.cs;*resigner.cs;*sesigner.cs;*tesigner.cs;*uesigner.cs;*vesigner.cs;*wesigner.cs;*xesigner.cs;*yesigner.cs;*zesigner.cs;*_esigner.cs;*.esigner.cs;*adesigner.cs;*bdesigner.cs;*cdesigner.cs;*ddesigner.cs;*edesigner.cs;*fdesigner.cs;*gdesigner.cs;*hdesigner.cs;*idesigner.cs;*jdesigner.cs;*kdesigner.cs;*ldesigner.cs;*mdesigner.cs;*ndesigner.cs;*odesigner.cs;*pdesigner.cs;*qdesigner.cs;*rdesigner.cs;*sdesigner.cs;*tdesigner.cs;*udesigner.cs;*vdesigner.cs;*wdesigner.cs;*xdesigner.cs;*ydesigner.cs;*zdesigner.cs;*_designer.cs

您好,只需将上面的内容复制并粘贴到“查看这些文件类型:”

-Steven Chong

【讨论】:

  • 虽然这在*.designer.cs 不会显示在搜索结果中有效,但白名单与将条件列入黑名单不同。例如,如果我想忽略 *.designer.csReference.cs,此白名单将失败。
  • 这是一种解决方法,Visual Studio 将保存您的列表。如果您想忽略 *.designer.cs 和 reference.cs,我可以发布另一个白名单,我个人认为这很有用并希望分享
  • 它太丑了,我喜欢它:-D
  • 这很糟糕,你应该感到难过!虽然 VS 会因为强迫我们这样做而感觉更糟,但干得好 :)
  • 这让我打喷嚏:)
【解决方案2】:

我发现已经很晚了,但是查看此页面上的投票数和活动,我发布了我的答案;也许别人觉得它有用。以下是在 VS2010 及更高版本中执行此操作的方法:

  1. 打开包管理器控制台(工具 > NuGet 包管理器 > 包管理器控制台)。让 PowerShell 自行初始化。
  2. 在 PowerShell 提示符处输入以下命令:

    dir -Recurse | Select-String -pattern "Your Search Word Or Pattern" -exclude "*.designer.cs"

  3. 这将列出您指定的单词或模式的所有出现,包括文件名、行号和找到它的文本行。

附加说明

  1. 如果您想指定多个排除模式,请将 "*.designer.cs" 替换为 @("*.designer.cs", "*.designer.vb", "reference.cs") 或您想跳过的任何其他文件。
  2. 另一个好处是搜索模式也支持正则表达式。
  3. 此解决方案的一个缺点是它不允许您双击结果中的一行以在 Visual Studio 中打开该文件。您可以通过命令管道解决此限制:

    dir -Recurse | Select-String -pattern "Your String Or Pattern" -exclude "*.designer.vb" | sort | Select -ExpandProperty "Path" | get-unique | ForEach-Object { $DTE.ExecuteCommand("File.OpenFile", """$_""") }

这将打开在 Visual Studio 中找到字符串或模式的所有文件。然后,您可以在单个文件中使用查找窗口来定位确切的实例。

此解决方案的另一个优点是它也适用于 Express 版本,因为 Package Manager 包含在 2012 和 2013 Express 版本中;但不确定 2010 年。

【讨论】:

  • 后一个命令会在 VB 解决方案上的 Visual Studio 2015 中引发大量窗口显示“无法完成操作”。
  • 找到答案 - 将 (“File.OpenFile”, $_) 替换为 (“File.OpenFile”, """$_""") 。这是将文件名用引号括起来,因为路径包含空格。如果搜索整个解决方案,还可以考虑添加 *.VB。在我这样做之前,我得到了很多无关的文件。
【解决方案3】:

对于 Visual Studio 2010,请尝试使用 Ultra Find 扩展名。您可以明确排除扩展。

请注意,搜索速度取决于您搜索的是文件系统还是项目/解决方案。

【讨论】:

  • 不幸的是,Ultra Find 中没有 Regex 搜索,它降低了一些 Ultraness...
  • 很遗憾,Ultra Find 扩展被删除了。。还有其他人知道吗?
  • @wasatchwizard 我也在寻找类似的东西。你有幸找到一些东西(特别是 VS2012)吗?
【解决方案4】:

Microsoft Connect 票证“Find option to exclude designer generated code”表示在 VS 2010 中不会出现按文件扩展名过滤搜索。

【讨论】:

  • 这个答案现在无效,因为在 VS2010 中可以按文件类型过滤
  • @hamlin11 你能提供一个参考吗?
  • 不确定这有什么帮助 - 您按文件类型进行搜索,但如何排除某些文件名?
【解决方案5】:

Visual Studio 16.5.x 中添加了排除匹配模式文件的功能

https://devblogs.microsoft.com/visualstudio/modernizing-find-in-files/

以“!”为前缀的任何路径或文件类型字符将被排除 从搜索中。例如,您可以将“!*\node_modules*”添加到 文件类型列表以排除 node_modules 文件夹中的任何文件。

【讨论】:

    【解决方案6】:

    关于 Visual Studio 2019 16.5(Preview 1)及更高版本:

    我参加聚会很晚,但我最近确实想从我的搜索中过滤掉 Designer.vb 文件,我了解到 VS 团队在 2019 年底更新了“查找和替换”对话框(第Ctrl+Shift+F)。

    您现在可以非常轻松地过滤掉一些扩展名:您只需将正确的字符串添加到文件类型文本框:

    过滤器用分号分隔。以“!”开头的过滤器是针对某事的过滤器。在这里,我添加了以下内容以从我的设计器文件中排除代码:

    !*.designer.vb
    

    这将转换为“避免以'通配符'.designer.vb 开头的文件”

    一个非常有趣的改进。 Here's the associated blog post for more details.你应该通读一遍。

    【讨论】:

      【解决方案7】:

      我只是在寻找这个问题的答案时遇到了这个问题。

      对 VS 感到沮丧,转而使用我值得信赖的 UltraEdit 副本,并在其“在文件中查找”工具中指定了这些选项:

      File names/extensions to ignore in search:
      
          *.pdb;*.dll;*.exe;*designer.vb;*.xsd;*.xml;*.xss;*.resx;
      

      【讨论】:

      • @sammeric:感谢您的提示,欢迎来到 SO。 UltraEdit 有免费版本吗?我喜欢记事本++,但它似乎没有搜索忽略功能。 (顺便说一句,SO 回复中不需要签名。您所有的帖子都会使用您的姓名和头像自动签名。)
      • 很遗憾,没有免费版本的 UltraEdit。我买了一份副本,因为我已经使用了很多年(最初是为了在 VS 添加该功能之前的列编辑模式)。它具有许多强大的功能,使其个人物有所值。我使用正则表达式搜索和替换的脚本来命名一个功能。
      【解决方案8】:

      一个商业选项是 29 美元的 Entrian Source Search 插件,它可以specify exclusion patterns

      【讨论】:

        【解决方案9】:

        确实很难找到答案,但这是我在尝试“从项目中排除”后所做的,只是发现这些文件也被搜索了。

        幸运的是,我不想包含的所有文件都位于根目录下的一个名为“存档”的文件夹中,所以...我将文件剪切并粘贴到我的桌面上。

        也许这就是 Ultra Find Extension 消失的原因...开发人员可以将所有不需要的文件分组到 Web 根目录之外的一个文件夹中,然后在搜索时将其删除,哈哈。

        【讨论】:

          【解决方案10】:

          只搜索文件类型:*.aspx.vb

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-04-27
            • 2019-01-15
            • 1970-01-01
            • 1970-01-01
            • 2012-07-04
            • 2020-06-10
            • 1970-01-01
            相关资源
            最近更新 更多