在VS中查找文本,包括.sln和.csproj文件

18

如何查找包含.sln和.csproj的文本?我想要搜索所有项目中存在的软件包版本。在某些情况下,软件包版本未在npm中捕获,但存在于.csproj文件中,因此会导致问题。

5个回答

19

在VS中:

转到 编辑 > 查找和替换 > 文件中查找,打开此屏幕:

enter image description here

然后按下上面圈起来的红色 Look In 右边的省略号按钮。

这将打开一个屏幕,在那里您可以选择文件夹:

enter image description here

使用列表之间的右箭头(用红色圈出)选择要搜索的文件夹,选择包含您想要搜索的.proj或.sln文件的文件夹。
按OK。
在查找和替换屏幕上,如果您只想要项目文件,则可以添加过滤器(类似于其他答案中提到的),例如.??proj;.sln;.asax;.ashx。

enter image description here

最后,查找按钮将被启用,点击“查找全部”将返回包括项目文件在内的结果:

enter image description here

注意:@T.S.提出了非常好的观点,即我在截图中勾选了“仅显示文件名”。您不需要这样做才能使此操作生效。我勾选了这个选项是因为我的项目中有压缩后的文件,如果将它们包括在搜索结果中,Find Results窗口会变得非常缓慢!

对我来说很有效。您还可以为文件夹集命名。整洁。 - Tore Aurstad
当在解决方案中使用数十个项目,但它们位于不同的目录中(在主解决方案目录之外),这种方法非常非常繁琐。 - Sylwester Zarębski
@SylwesterZarębski 我没有尝试过这个,但在第二张截图中,看起来你可以定义一个文件夹集合,这听起来可能允许你创建一个可重用的文件夹列表进行搜索。此外,我认为搜索可能是递归的,因此如果树上更高层次的某个单个目录包含了所有目录,则您可能只需选择该更高级别的目录进行搜索。就像我说的那样,我没有尝试过这两种方法,但你可以试一下。 - tomRedox

10

Visual Studio 有一个名为"在文件中查找"的选项。您打开该窗体,键入要搜索的文本,然后可以设置文件类型。例如,如果您想搜索项目文件、解决方案文件和代码文件,您可以设置过滤器为

*.??proj;*.sln;*.vb;*.cs;*.asax;*.ashx

我们的代码中混合了C#和VB,因此*.??proj包含所有这些。

点击“查找全部”

当搜索结束后,在结果窗口中,点击匹配行,它将带您到文件中的匹配行所在位置。

重要提示

当字段"查找范围"设置为"整个解决方案""当前项目""所有打开的文档"时,即使在过滤器中列出了*.??proj文件,搜索也会完全跳过它们。 如果卸载项目并打开项目文件进行编辑,则"整个解决方案""所有打开的文档"选项将搜索已打开的项目文件。

还要记住

已向微软报告了与“在文件中查找”功能相关的问题,尤其是VS2017版本受到影响。因此,根据您使用的VS版本,某些功能可能无法正常工作。我知道“子文件夹”功能受到影响。我发现只能搜索3层深度而无法更深地搜索。您可以查看或报告新漏洞

1
@RajaramShelar 使用字段“查看这些文件类型”--> https://static1.squarespace.com/static/503beff0e4b0411ce5b1ed29/t/508d84e3e4b0d28844dda9b2/1351451875446/csproj.PNG 使用“查找全部”按钮。 - T.S.
1
@tomRedox 很好,你发布了屏幕截图。我正是在解释这个问题。取消勾选“仅显示名称” - 你将得到实际的代码行和确切的用法。我认为,那些对这些指令有问题的人只是没有设置正确的过滤器。在过滤器中犯一个小错误,你就会得不到结果。但你知道,这有点有趣。这里的人都是软件开发人员,他们竟然做不到这一点? - T.S.
1
@T.S. 嗯,你发现得很好,我忘记了我打开了“在文件中查找”,我已经添加了一条注释说明不需要这个选项! - tomRedox
1
@T.S. 那么您的指示是不完整的。在VS 2017中选择“查找文件”,将默认“查找位置”框为您上次使用的选项,如果您已经打开了解决方案,则“整个解决方案”是默认选项。也许他们已经将几个不同的功能合并成一个单一的功能。无论哪种方式,您的说明都没有提到用户必须选择要搜索的文件夹。 - Tobias J
2
@T.S. 您在暗示“在文件中查找”每次的行为都是完全相同的,但事实并非如此。默认情况下,“整个解决方案”不会搜索 csproj 文件,这种行为既令人困惑又不一致。然而,您却坚称如果有人不能自动理解这种差异,那就是因为他们不够聪明。您说“在文件中查找可以搜索硬盘上的任何内容”,但对于 VS 2017 来说,这是绝对不正确的。只有在更改默认设置时,它才会搜索硬盘上的所有内容。您的答案已经不再正确。 - Tobias J
显示剩余8条评论

3
对我而言,切换解决方案和文件夹视图并进行全局搜索.csproj文件类型就解决了问题!

enter image description here

在“文件夹视图”下搜索 .csproj 文件才有效。

如果使用解决方案目录之外的项目,此方法不适用。文件夹视图仅显示解决方案目录,而不是所有项目目录。 - Sylwester Zarębski

1
在Visual Studio中:
  • 打开“查找文件”
  • 在“查找内容:”下输入要搜索的文本
  • 在“查找位置:”下点击... 3个点,它将打开“选择搜索文件夹”
  • 从“可用文件夹”中选择解决方案的相应文件夹
  • 一旦识别出文件夹,使用“>”将其移动到右侧的“选定文件夹:”下,并按“确定”。
  • 现在在搜索弹出窗口中单击“查找全部”。

它将在所有文件中搜索文本,包括.sln和.csproj文件。


-1

在Visual Studio中,您可以搜索项目项。要搜索csproj和sln文件的唯一方法是使用例如Windows资源管理器之类的工具。this可能会有所帮助。


1
谢谢。我们能在VS本身中有任何东西吗? - Rajaram Shelar
3
“在 csproj 和 sln 文件中搜索的唯一方法是使用例如 Windows 资源管理器进行搜索”- 错误!(翻译后的内容):这句话是错误的。 - T.S.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接