You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用VS2017+ReSharper排查VB.Net默认窗体实例剩余使用

查找VB.Net中默认窗体实例使用的实用方法(VS2017+ReSharper)

刚好你用的VS2017搭配ReSharper,这俩工具组合起来定位默认窗体实例的使用场景非常高效,给你几个靠谱的方案:

1. 利用ReSharper的内置代码检查

ReSharper专门针对VB.Net的默认窗体实例做了检查规则,步骤很简单:

  • 按下Alt+R, S打开ReSharper设置面板,依次导航到Code Inspection → Inspection Severity → VB.NET → Potential Code Quality Issues
  • 找到名为Access to default form instance的规则,把它的级别改成「Warning」或者「Error」
  • 按下Alt+R, G运行全局代码检查,所有使用默认实例的地方都会被高亮标记,直接点击就能跳转到对应代码位置,精准又省心。

2. 用ReSharper结构搜索(SSR)精准匹配

如果你需要更灵活的搜索逻辑,结构搜索比普通正则靠谱得多:

  • 按下Alt+R, S, S打开结构搜索窗口,切换到VB.NET模式
  • 设置搜索模式为:$FormClass$.$Member$
  • 点击「Edit Variables」添加约束:
    • 给$FormClass$设置约束:必须是继承自System.Windows.Forms.Form的类
    • 给$Member$设置约束:必须是非共享(Non-Shared)的成员
  • 执行搜索后,所有通过类名直接访问非共享成员的情况(也就是默认实例的使用)都会被找出来,完全不会误判共享成员的调用。

3. 编译时强制报错定位(破坏性验证)

如果你想彻底排查,还可以通过修改构造函数让默认实例无法创建,触发编译错误来定位:

  • 给每个窗体类添加一个私有无参构造函数:
    Private Sub New()
        ' 保留原构造函数的初始化代码(比如InitializeComponent())
    End Sub
    
  • 编译项目,所有使用默认实例的地方都会报编译错误「无法访问私有构造函数」,直接定位到问题代码。注意:这个方法是临时的,排查完记得把构造函数改回Public,或者在测试分支操作。

4. VS自带正则查找(辅助补充)

如果你想快速扫一遍,也可以用VS的全局查找配合优化后的正则:

  • 按下Ctrl+Shift+F打开全局查找窗口,切换到「正则表达式」模式
  • 使用正则:(?<!Shared\s)[A-Z][\w]*\.[a-z][\w]*,这个正则会匹配首字母大写的类名调用首字母小写的非共享成员,不过可能会有少量误判,需要结合上下文验证,适合快速初筛。

内容的提问来源于stack exchange,提问作者Dennis Kuypers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:31:12