标识Visual Studio的项目Resources.resx文件中已使用和未使用的资源

目录

批处理脚本——尽管很粗糙,但功能强大


在这篇文章中,您将学习如何识别VS project resources.resx文件中已使用和未使用的资源。

如果您经常在Visual Studio项目中使用项目资源,无论是VB还是C#,最终都会得到一个包含许多未使用项的大资源文件(例如,Resources)。这是因为,当您删除使用资源的代码时,您经常会忘记删除实际的资源项。

此问题有一些解决方案,例如使用商业代码重构工具或对Resources.Designer.vb/Resources.Designer.cs 进行一些小的修改,并依靠编译器生成有关未使用资源的警告。在这篇文章中,我选择采用不同的方法:使用批处理脚本

我的完整批处理脚本将接受命令行中的四个参数,从左到右列出:

  1. VB.NET源代码文件的路径,例如WindowsApplication1*.vb
  2. 项目资源文件的名称,例如WindowsApplication1My ProjectResources.resx
  3. 写入所有资源使用情况的文件的名称,例如all_resources.txt
  4. 写入所有未使用资源的文件的名称,例如unused_resources.txt

它利用FOR扩展语法(FOR /F)来解析资源文件并且FINDSTR查找引用所有资源的位置。它只能与VB源代码文件一起使用,其中大多数开发人员经常使用 My.Resources.XXXX 来访问资源。由于FINDSTR只是执行string搜索,批处理脚本不会关心被注释掉的代码,以及不使用VBMy命名空间访问的资源。如果要将其与C#源代码一起使用,则需要编辑调用FINDSTR以匹配访问资源的方法,例如,是Project1.Resources.Resource1而不是My.Resources.Resource1

这篇文章的其余部分将分析我在写这篇文章时遇到的一些有趣的观点——希望这对那些有类似问题的人有用。

批处理脚本——尽管很粗糙,但功能强大

许多人可能认为批处理脚本已成为过去,因为今天有很多替代方案——Windows PowerShellPerl.VBS 文件。然而,有时,我仍然使用它,因为它强大而简单。查看用于搜索资源的代码:

FOR /F "tokens=*" %%a IN (%TMPFILE%) DO (
………
        FINDSTR /S /P /N /C:"My.Resources.%%c" %SRCPATH% >> %OUT_ALLTOKENS%
        REM FindStr returns an errorlevel of 0 if the string was found, 
        1 and above if it was not found.
        IF ERRORLEVEL 1 (
………
        )

………….      
    )
)

FOR /FFINDSTR的调用可以很容易地转换为10-20.NET代码,除非使用某些现有的文本处理库。在这里,几乎所有事情都完成了,只需记住语法,可通过FOR /?FINDSTR /?

另一个例子是如何生成一个随机的文件名:

:GETTEMPNAME
set TMPFILE=%TMP%mytempfile-%RANDOM%-%TIME:~6,5%.tmp
if exist "%TMPFILE%" GOTO :GETTEMPNAME

等效的.NET代码为:

string filename = Path.GetTempFileName()

但是,批处理脚本仍然非常粗糙。例如,尽管Windows XP批处理脚本允许通过(........)使用block语句,但不要指望一切都能像在现代编程语言中那样工作。以下情况将导致问题:

IF (%1) == () (
    ECHO Missing first parameter: path to the VB.NET source code files 
    (e.g. WindowsApplication1*.vb)
    EXIT /B 1
) ELSE (
    SET SRCPATH=%1
)

执行将在到达ECHO后立刻终止,但没有任何说明原因。我相信很多人需要一些时间来弄清楚导致它的原因并修复它。以下方法将起作用:

IF (%1) == () (
    ECHO Missing first parameter: path to the VB.NET source code files, 
    e.g. WindowsApplication1*.vb     
    EXIT /B 1
) ELSE (
    SET SRCPATH=%1
)

此外,上面的示例演示了如何检查缺少的参数。这在C#VB.NET中更有意义,只需与空string(例如“”)进行比较即可。

此批处理脚本中还有许多其他有用的代码片段,例如,如何使用延迟环境变量扩展,或者如何在FOR /F中使用双引号作为分隔符。我不会详细解释它——代码注释得很好,花一些时间自己研究一下。

本文最初发布于 Identifying used and unused resources in a Visual Studio’s project Resources.resx file | ToughDev

https://www.codeproject.com/Articles/5360390/Identifying-Used-and-Unused-Resources-in-a-Visual

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
https://marketplace.visualstudio.com/items?itemName=DonAirey.ResourceGenerator&ssr=false#qna This package contains a custom tool that can be used to replace the PublicResXFileCodeGenerator that Microsoft uses by default to generate resources. The biggest problem with the Microsoft default code generator is that the generated constructor is protected, which means that it can’t be used to construct strongly-typed resources in Visual Studio in Portable Class Libraries (PCL). Simply replace the PublicResXFileCodeGenerator custom tool on all the resources with ResourceGenerator and a portable version of the resources will be generated. To create portable resources, start with a Portable Class Library project. Create a directory for your resources (e.g. Strings, this step is optional). The right click on the project, select “Add…” and select Resources File from the options. Name the file whatever you want (e.g. Resources, Errors, etc.) and hit Add. Select the .RESX file from the Solution Explorer window and hit F4 to get to the properties. In the Custom Tools property, remove ResXFileCodeGenerator or PublicResXFileCodeGenerator and type in ResourceGenerator. Now your solution can use these strings from code or XAML, in WPF, Windows 8 or UWP projects. To add localization, create a copy of the resource file and add extensions for the cultures you want to support, such as en-GB, fr-FR or any other combination. After adding the resource file, updating the extension, and translating the text (I’m a big fan of Google Translate for this part), you will need to remove the ‘Custom Tool’ property and make sure that each of the culture files has an Embedded Resource as a Build Action. The directory should look like this:
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值