【发布时间】:2022-07-19 08:11:12
【问题描述】:
使用任何版本的 .NET Core 创建项目时,调试应用程序都会引发此错误:
System.Configuration.ConfigurationErrorsException: '配置系统初始化失败'
内部异常 ConfigurationErrorsException:无法识别的配置部分 system.diagnostics。 (C:\Users[UserName]\Documents\Visual Studio 2022\Projects\WinFormsApp1\WinFormsApp1\bin\Debug\net6.0-windows\WinFormsApp1.dll.config 第8行)
但是,当使用任何版本的 .NET Framework 创建项目时,应用程序调试和运行都非常好,没有错误或异常。这两个项目都是作为全新的清洁项目创建的。这两个项目的创建完全相同,唯一的区别是 .NET Core 或 .NET Framework。
我正在使用 Visual Studio 2022、VB.NET 并创建一个 Windows 窗体应用程序 (VB)。我已安装的 .NET Core 版本:[3.1]、[5.0] 和 [6.0]。我安装的 .NET Framework 版本:[2.0]、3.0]、[3.5]、[4.6]、[4.6.1]、[4.6.2]、[4.7]、[4.7.1]、[4.7. 2]和[4.8]。
两个项目的步骤如下: 打开 Visual Studio 2022 -> 创建新项目 -> 选择 Windows Forms App(.NET Core - 任何版本)或(.NET Framework - 任何版本) -> 项目名称:WindowsApp1,位置:[我的位置],解决方案名称: WindowsApp1,将解决方案和项目放在同一目录中:(我尝试过选中和未选中),框架:(我尝试过任何和所有版本的 .NET Core 和 .NET Framework)-> 创建
将复选框添加到空表单 -> 复选框名称为默认值(CheckBox1 - 我已尝试更改名称)-> 项目属性 -> 设置 -> 添加设置 - 名称:cbState(我尝试过不同的名称),键入: Boolean, Scope: User, Value: True or False (我都试过了)
两个项目的代码完全相同:
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
CheckBox1.Checked = My.Settings.cbState
End Sub
Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
My.Settings.cbState = CheckBox1.Checked
My.Settings.Save()
End Sub
End Class
我尝试调试应用程序 -> .NET Framework 版本无异常运行,并按预期工作 - 保存 CheckBox1 的复选框状态并在重新启动应用程序时恢复它。
.NET Core 版本抛出上述异常错误。
同样,所有步骤都以完全相同的方式通过完全相同的流程执行。
Settings.Designer.vb 文件在抛出异常时///此处突出显示:
<Global.System.Configuration.UserScopedSettingAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Configuration.DefaultSettingValueAttribute("False")> _
Public Property cbState() As Boolean
Get
Return CType(Me("cbState"),Boolean) ///This is the highlighted line
End Get
Set
Me("cbState") = value
End Set
End Property
End Class
End Namespace
我也尝试过同步设置。
我有一个项目我已经花费了几个小时,它是使用 .NET Core 6.0 创建的。当我遇到它时,我决定尝试在一个新项目中重现此错误,结果是 .NET Core 引发了相同的异常。然后我尝试使用 .NET Framework 而不是 .NET Core,问题得到解决。尝试在项目中使用 My.Settings() 时遇到此错误。我在网上搜索了答案,但找不到任何东西。如果有人有任何解决方案或者我遗漏了什么,请告诉我。我想找到一个不需要我使用 .NET Framework 而不是 .NET Core 从头开始创建新项目的解决方案,因为我必须从头开始(我假设。)我正在尝试要做的是将属性设置绑定到对象(例如复选框)。在 VB.NET 6.0 Core 中,微软似乎从属性窗口中删除了易于访问的 (ApplicationSettings) 绑定,因此必须手动设置与属性的绑定,据我所知。任何帮助将不胜感激!
【问题讨论】:
-
你需要从配置文件中删除指定的部分。
-
.NET Core 中没有这样的东西。
My.Settings只是Properties.Settings.Default的快捷方式,它反过来从 .NET Old 的app.config文件加载设置。 .NET Core 中没有这样的东西。 .NET Core 允许从多种来源加载配置,而不是具有固定名称的单个文件,包括各种格式的文件、环境变量、数据库和命令行。 -
@user18387401 .NET Core 没有配置文件
-
.NET 6 是 .NET Core 6,而不是 .NET Framework 4+2。配置系统从 .NET old 到 5 年前的 .NET Core 完全改变了。旧系统太麻烦了,而且很容易访问 - 尝试为开发和生产管理不同的设置。或者尝试使用不同的配置设置进行单元测试。不要介意容器部署,其中设置通常通过容器引擎/编排器提供的环境变量提供
-
@PanagiotisKanavos,尝试创建一个面向 .NET 6 的 VB WinForms 应用程序项目并添加一个设置,然后回复我。有一个配置文件,它包含一个
部分,这就是提供的错误消息引用该文件中该部分的原因。如果该部分被删除,那么错误就会消失。这不是我第一次参加牛仔竞技表演。
标签: vb.net exception .net-core property-binding my.settings