.NET 8控制台程序指定Windows目标时实例化SqliteConnection抛异常
.NET 8 Windows控制台程序使用Microsoft.Data.Sqlite时的异常问题
环境信息
- .NET 8
- 控制台应用程序
- 目标Windows OS版本:v10.0.19041.0
- Microsoft.Data.Sqlite 8.0.6
问题描述
执行创建SqliteConnection实例的代码时,抛出System.InvalidOperationException异常,但跳过该异常后仍可正常读写数据库。将项目的目标操作系统版本改为“none”后,异常不再出现。
触发异常的代码
using Microsoft.Data.Sqlite; using var connection = new SqliteConnection("Data Source = test.db");
异常详情
System.InvalidOperationException HResult=0x80073D54 Message=操作因对象当前状态无效而无法执行。 Source=WinRT.Runtime StackTrace: at WinRT.ExceptionHelpers.<ThrowExceptionForHR>g__Throw|39_0(Int32 hr) at WinRT.ExceptionHelpers.ThrowExceptionForHR(Int32 hr) at ABI.Windows.Storage.IApplicationDataStaticsMethods.get_Current(IObjectReference _obj) at Windows.Storage.ApplicationData.get_Current() at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor) at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
完整重现代码
触发异常的项目配置(ConsoleApp1.csproj)
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net8.0-windows10.0.22621.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> <SupportedOSPlatformVersion>10.0.22621.0</SupportedOSPlatformVersion> </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.Data.Sqlite" Version="8.0.6" /> </ItemGroup> </Project>
程序代码(Program.cs)
using Microsoft.Data.Sqlite; using var connection = new SqliteConnection("Data Source = test.db");
修复后的项目配置(目标OS改为none)
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net8.0</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.Data.Sqlite" Version="8.0.6" /> </ItemGroup> </Project>
内容的提问来源于stack exchange,提问作者Dan Ling
相关产品推荐
相关产品推荐

