[C#]“System.InvalidOperationException”类型的未经处理的异常在 System.Console.dll 中发生

当使用VSCode调试C#应用并遇到'Cannot read keys when either application does not have a console or when console input has been redirected.'错误时,可以在launch.json文件中设置'console'为'integratedTerminal'或'externalTerminal',使应用在VS Code的集成终端或外部终端运行,从而解决Console.ReadLine()无法正常工作的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

错误提示:

“System.InvalidOperationException”类型的未经处理的异常在 System.Console.dll 中发生 : ‘Cannot read keys when either application does not have a console or when console input has been redirected. Try Console.Read.’

在这里插入图片描述


在OmniSharp Visual Code docs里找到了答案:

Console (terminal) window

By default, processes are launched with their console output (stdout/stderr) going to the VS Code Debugger Console. This is useful for executables that take their input from the network, files, etc. But this does NOT work for applications that want to read from the console (ex: Console.ReadLine). For these applications, use a setting such as the following:
“console”: “integratedTerminal” When this is set to integratedTerminal the target process will run inside VS Code’s integrated terminal. Click the ‘Ter

### 解决 Microsoft.ACE.OLEDB.12.0 提供程序未注册问题 当遇到 `System.InvalidOperationException` 异常提示“未在本地计算机上注册‘Microsoft.ACE.OLEDB.12.0’提供程序”,这通常意味着缺少必要的数据库访问组件[^2]。 #### 下载 Microsoft Access Database Engine 2010 Redistributable 为了使应用程序能够连接到 `.accdb` 或者 `.mdb` 文件,需要安装 **Microsoft Access Database Engine 2010 Redistributable**。可以从微软官方网站获取该软件包并按照说明完成安装过程[^3]。 对于不同版本的操作系统(32位 vs 64位),应选择相应的安装文件: - 对于 32 位操作系统或运行 32 位应用的情况,请下载 [AccessDatabaseEngine.exe](https://www.microsoft.com/en-us/download/details.aspx?id=13255)[^3] - 如果是在 64 位 Windows 上部署,则需使用 [AccessDatabaseEngine_X64.exe](https://www.microsoft.com/en-us/download/details.aspx?id=13255)[^3] 注意:如果已经安装了 Office 的 32 位版,则即使在 64 位 Windows 中也应当只安装 32 位的驱动程序;反之亦然。 #### 安装步骤概述 执行所选链接中的可执行文件后,遵循屏幕上的指示来完成设置向导。默认情况下会自动处理大多数配置选项,无需额外干预即可正常工作。然而,在某些特定环境下可能还需要手动验证 DLL 是否存在于预期位置,比如 C:\Program Files\Common Files\Microsoft Shared\OFFICE14\[ACEOLEDB.DLL][^4]. #### 验证安装成功与否的方法之一就是尝试通过 ADO.NET 进行简单的数据读取操作测试如下所示: ```csharp using System; using System.Data.OleDb; class Program { static void Main() { string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\path\to\your\Database.accdb;"; using (OleDbConnection conn = new OleDbConnection(connectionString)) { try { conn.Open(); Console.WriteLine("Connected successfully!"); } catch (Exception ex) { Console.WriteLine($"Error connecting to database: {ex.Message}"); } } } } ``` 上述代码片段展示了如何利用 C# 和 OLE DB 来打开一个基于 ACE 的数据库连接。如果一切顺利的话,应该能看到控制台输出 "Connected successfully!" 字样表示连接建立成功[^1].
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值