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

VS2022更新后添加VB.NET应用设置触发BC30469错误求助

问题描述
  • 在.NET 4.7.2版本的VB.NET项目中,通过Visual Studio 2022添加新应用程序设置后,所有调用My.Settings的代码均触发BC30469错误:Reference to a non-shared member requires an object reference
  • 若使用Notepad++手动修改Settings.Designer.vb和Settings.settings添加新设置,不会出现报错,推测问题由近期VS2022的更新导致
问题分析

从提供的代码文件来看,核心问题出在VS自动生成的代码逻辑中:

  1. Settings类内部定义了私有共享的defaultInstance全局实例,但缺少对外暴露的共享Default属性,导致MySettingsProperty模块无法正确获取全局实例
  2. Settings.settings中的GeneratedClassNamespace字段为空,可能引发命名空间解析异常,使得My.Settings无法关联到共享实例
解决方案

方案1:修复自动生成的Settings.Designer.vb代码

在Settings类中添加公共共享的Default属性,让MySettingsProperty模块能正确返回全局实例:

Partial Friend NotInheritable Class Settings
    Inherits Global.System.Configuration.ApplicationSettingsBase
    
    Private Shared defaultInstance As Settings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New Settings()), Settings)
    
    ' 添加以下共享属性
    Public Shared ReadOnly Property Default() As Settings
        Get
            Return defaultInstance
        End Get
    End Property
    
    ' 原有设置属性代码...
End Class

方案2:修正Settings.settings的命名空间配置

用文本编辑器打开Settings.settings,将GeneratedClassNamespace设置为项目的根命名空间(替换为你的实际项目命名空间):

<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" 
              CurrentProfile="(Default)" 
              GeneratedClassNamespace="YourProjectRootNamespace" 
              GeneratedClassName="Settings">
  <!-- 原有内容 -->
</SettingsFile>

保存后,右键点击Settings.settings → 运行自定义工具,让VS重新生成正确的Settings.Designer.vb文件

方案3:清理VS缓存后重试

如果不想每次修改设置都手动修复,可以按以下步骤操作:

  • 打开项目属性的设置选项卡,删除刚添加的有问题的设置
  • 关闭VS2022,删除项目目录下的.vs文件夹(清理VS缓存)
  • 重新打开项目,再次添加新设置,观察错误是否消失
验证方法

修改完成后,编译项目,检查所有使用My.Settings.XXX的代码是否还触发BC30469错误;若仍有问题,执行菜单→生成→清理解决方案后重新生成项目。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 16:22:45