无法在新项目中使用 app.config

Posted

技术标签:

【中文标题】无法在新项目中使用 app.config【英文标题】:can't make use of app.config in new project 【发布时间】:2022-01-20 11:09:50 【问题描述】:

我从标题中知道这听起来像是重复的。事实上,这是对似乎有许多其他症状的问题的过度简化,我承认我将难以表达。我真的不想发布这个问题,但是我已经将它搜索到死并撞到了墙。

自从我上次创建新的 WinForms 应用程序以来已经有一段时间了,我注意到很多事情都……关闭了。首先,在创建项目时,尽管安装了多个版本的 .NET Framework,但我只获得了 2 个目标框架选项。

我选择使用默认选项 (.NET Core 3.1)。这是一个简单的应用程序,旨在更新数据库中项目的状态。与我的所有项目一样,我喜欢将连接字符串存储在 app.config 中,但是新项目没有生成这样的文件。这是旧项目中的样子:

我决定强制添加一个 app.config 文件(来自项目菜单中的“添加新项目”向导),只是为了让调试器在执行过程中停止,控制台中只有这个错误:

exception of type 'System.TypeInitializationException' occurred...  

在谷歌搜索该问题后,我了解到配置文件的冲突可能会导致该错误被抛出,因此我立即删除了我创建的那个并决定查看调试目录。

这是我注意到目录结构与以前不同的地方。以前调试文件夹将包含项目文件,现在我看到一个文件夹 netcoreapp3.1。无论如何,在探索其内容后,我发现了一个配置文件,但有一个不同之处。以前的配置文件被命名为 projectname.exe.config,而这个是 projectname.dll.config。尽管如此,我打开它并添加了我的 Appsettings,但它看起来确实与我习惯的不同:

此时,程序运行时没有抛出之前的异常,但现在我的连接字符串没有被设置,因为它不会从 Appsettings 中提取值。这是应该读取字符串的行:

 Public Shared Cstring As String = System.Configuration.ConfigurationSettings.AppSettings("ConnectionString")

我应该使用其他方法来读取 Appsettings 密钥,还是我需要制作其他类型的配置文件?

【问题讨论】:

VS 安装程序允许您添加包含 .Net Framework 的工作负载,从 4.6.1 到 4.8。 -- 查看是否安装了所有桌面开发相关的工作负载。 -- WinForms 模板当然包括一个针对.Net Framework 的模板。它列在(下一页).Net 5 / 6 模板之后(避免使用 .Net Core 3.1) 您需要选择“Windows Forms App (.Net Framework)”作为项目模板以针对 5.0 之前/非 Core .NET ---“Windows Forms App”将仅支持 .NET 5.0 或核心。 @Craig 这就是问题所在!谢谢! 也感谢@Jimi 的提示 【参考方案1】:

我对不同的 app.config 格式一无所知,但我可以告诉您如何解决仅将 .NET 5.0 或 .NET Core 作为项目目标的问题。

如果您在创建新项目时查看可用的项目模板列表,您看到的第一个模板将是“Windows 窗体应用程序”。正如您所指出的,这将仅支持 .NET 5.0 或 .NET Core。如果您继续查看列表,您将看到“Windows Forms App (.Net Framework)”。这是用于支持 5.0 之前/非 Core .NET 的项目模板,例如.NET 框架 4.8。

【讨论】:

以上是关于无法在新项目中使用 app.config的主要内容,如果未能解决你的问题,请参考以下文章

无法在非 Spring 项目中使用 aspectJ 拦截器

无法安装“GSImageViewerController Pod”并且无法在项目中快速使用其代码

无法在 Visual C# 项目中使用我的 .dll

无法在 Eclipse 中使用 Kotlin 项目运行 Spring Boot

无法在 ListView 中使用自定义项目布局正确显示图像

React 项目无法在 git 子模块中使用节点模块