无法在新项目中使用 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的主要内容,如果未能解决你的问题,请参考以下文章
无法安装“GSImageViewerController Pod”并且无法在项目中快速使用其代码