Ran*_*ngy 17
我找不到任何现有的解决方案,可以在XAML文件中搜索字符串资源引用并批量删除未使用的.
所以我写了这个:https://github.com/Microsoft/RESX-Unused-Finder
它在项目目录中搜索字符串资源的引用,然后显示找不到匹配项的列表.您可以指定要搜索的模板,以便它可以在XAML文件中查找引用.
Ale*_*lex 11
我创建了一个免费的开源VS扩展,在项目中查找未使用的图像,刚刚发布了第一个版本:https://github.com/jitbit/vs-unused-image-finder
这不是算法可以可靠计算的信息.被检查的程序可以获取所有资源的列表并对它们执行某些操作,例如让用户从多个图标中进行选择.
您最好的选择可能是搜索所选资源访问API的所有引用并手动检查它们.使用grep/ sed您可以通过处理使用简单字符串的所有"简单"的站点来减少必须手动检查的站点.
由于我找不到一个简单而快速的解决方案,我发现至少有一个解决方案可以让我得到我正在寻找的结果,即使它需要一些时间(适合懒惰的周日下午).
该解决方案涉及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.
我最近构建了一个检测和删除未使用的字符串资源的工具.我使用这篇文章中的信息作为参考.该工具可能并不完美,但它可以完成繁重的工作,如果您拥有一个历史悠久的大项目,它将非常有用.我们在内部使用此工具来整合资源文件,并删除未使用的资源(我们从10,000个中删除了4,000多个资源).
您可以查看源代码,或者只需从此处安装ClickOnce:https://resxutils.codeplex.com/