在.NET解决方案中查找未使用的资源

gle*_*eng 56 .net resources

你如何在.resx文件中找到未使用的图标,图像,字符串,这些文件可能已成为"孤儿"并且不再需要?

hul*_*ist 41

最近ResXManager 1.0.0.41添加了一个功能来显示对字符串资源的引用数.

显示新参考列的屏幕截图


Ran*_*ngy 17

我找不到任何现有的解决方案,可以在XAML文件中搜索字符串资源引用并批量删除未使用的.

所以我写了这个:https://github.com/Microsoft/RESX-Unused-Finder

RESX Unused Finder截图

它在项目目录中搜索字符串资源的引用,然后显示找不到匹配项的列表.您可以指定要搜索的模板,以便它可以在XAML文件中查找引用.


Ale*_*lex 11

我创建了一个免费的开源VS扩展,在项目中查找未使用的图像,刚刚发布了第一个版本:https://github.com/jitbit/vs-unused-image-finder


Dav*_*itt 9

这不是算法可以可靠计算的信息.被检查的程序可以获取所有资源的列表并对它们执行某些操作,例如让用户从多个图标中进行选择.

您最好的选择可能是搜索所选资源访问API的所有引用并手动检查它们.使用grep/ sed您可以通过处理使用简单字符串的所有"简单"的站点来减少必须手动检查的站点.


Uwe*_*eim 7

由于我找不到一个简单快速的解决方案,我发现至少有一个解决方案可以让我得到我正在寻找的结果,即使它需要一些时间(适合懒惰的周日下午).

该解决方案涉及Visual Studio .NET 2010和ReSharper(我使用的是7.1版),如下所示.

分步解决方案

1.)在VS.NET中右键单击主RESX文件,然后从上下文菜单中选择"查找用法":

在此输入图像描述

这将打开ReSharper的"查找结果"窗口.

2.)双击解决方案窗口中的每个事件:

在此输入图像描述

这将打开资源的源代码窗口.

3.)在源代码窗口中重命名此资源:

在此输入图像描述

它将调出ReSharper的"重命名资源"对话框.

4.)为资源提供具有唯一前缀的新名称.在我的例子中,这是"TaskDialog_":

在此输入图像描述

它将重命名资源以及自动生成的C#包装器/访问类.

5.)对"Usages"窗口中的所有资源重复上述步骤2,3和4.

6.)在Visual Studio的资源编辑器中打开RESX文件,然后选择没有前缀的所有文件:

在此输入图像描述

7.)现在单击窗口顶部的"删除资源"按钮或只需Del按键:

在此输入图像描述

您最终有一个RESX文件,其中只包含文件中实际使用的资源.

8) (可选)如果您在多语言(如资源"Resources.de.resx"德国),重复步骤对于那些RESX文件7和8,太.

警告

请注意,除了通过强类型的自动生成的C#类访问字符串之外,这将不起作用Resources.


vot*_*bac 6

我最近构建了一个检测和删除未使用的字符串资源的工具.我使用这篇文章中的信息作为参考.该工具可能并不完美,但它可以完成繁重的工作,如果您拥有一个历史悠久的大项目,它将非常有用.我们在内部使用此工具来整合资源文件,并删除未使用的资源(我们从10,000个中删除了4,000多个资源).

您可以查看源代码,或者只需从此处安装ClickOnce:https://resxutils.codeplex.com/

  • 这看起来很有希望(一旦我发现你必须删除Resources.Designer.cs以使其显示任何结果).但它无法在XAML文件中找到引用,这是一个破坏者. (2认同)