From 61feecef673547f11c93b9f1cd6b609ef441bb0f Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Thu, 21 May 2026 00:43:44 +0000
Subject: [PATCH 1/3] Catch InvalidOperationException for "The process has no
package identity" error
Fixes #38275 - WinRT projection throws InvalidOperationException directly
instead of wrapping it in TargetInvocationException when the app has no
package identity.
Agent-Logs-Url: https://github.com/dotnet/efcore/sessions/bd1535ea-8555-48e5-88dc-23eed99f4c42
Co-authored-by: AndriySvyryd <6539701+AndriySvyryd@users.noreply.github.com>
---
src/Microsoft.Data.Sqlite.Core/SqliteConnection.cs | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/Microsoft.Data.Sqlite.Core/SqliteConnection.cs b/src/Microsoft.Data.Sqlite.Core/SqliteConnection.cs
index 3062c0f923c..7ce9558ecbd 100644
--- a/src/Microsoft.Data.Sqlite.Core/SqliteConnection.cs
+++ b/src/Microsoft.Data.Sqlite.Core/SqliteConnection.cs
@@ -82,6 +82,10 @@ static SqliteConnection()
{
// Ignore "The process has no package identity."
}
+ catch (InvalidOperationException)
+ {
+ // Ignore "The process has no package identity." when thrown directly by the WinRT projection.
+ }
if (currentAppData != null)
{
From 9dd94141f4186ab358f198e3d6699effaad6cf0f Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Thu, 21 May 2026 01:04:17 +0000
Subject: [PATCH 2/3] Add exception filters to check HRESULT for
no-package-identity errors
Instead of catching all TargetInvocationException/InvalidOperationException,
now uses exception filters that verify the exception is specifically about
missing package identity by checking for known HResult values:
- 0x80073D54 (APPMODEL_ERROR_NO_PACKAGE)
- 0x8000000D (E_ILLEGAL_STATE_CHANGE)
Agent-Logs-Url: https://github.com/dotnet/efcore/sessions/699fa5d7-3634-4c58-9596-27949bf0894f
Co-authored-by: AndriySvyryd <6539701+AndriySvyryd@users.noreply.github.com>
---
src/Microsoft.Data.Sqlite.Core/SqliteConnection.cs | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/src/Microsoft.Data.Sqlite.Core/SqliteConnection.cs b/src/Microsoft.Data.Sqlite.Core/SqliteConnection.cs
index 7ce9558ecbd..dd0d0ec7e40 100644
--- a/src/Microsoft.Data.Sqlite.Core/SqliteConnection.cs
+++ b/src/Microsoft.Data.Sqlite.Core/SqliteConnection.cs
@@ -78,13 +78,11 @@ static SqliteConnection()
{
currentAppData = appDataType?.GetRuntimeProperty("Current")?.GetValue(null);
}
- catch (TargetInvocationException)
+ catch (TargetInvocationException ex) when (IsNoPackageIdentityException(ex.InnerException))
{
- // Ignore "The process has no package identity."
}
- catch (InvalidOperationException)
+ catch (InvalidOperationException ex) when (IsNoPackageIdentityException(ex))
{
- // Ignore "The process has no package identity." when thrown directly by the WinRT projection.
}
if (currentAppData != null)
@@ -108,6 +106,11 @@ static SqliteConnection()
}
}
+ private static bool IsNoPackageIdentityException(Exception? ex)
+ => ex is InvalidOperationException or COMException
+ && (ex.HResult == unchecked((int)0x80073D54) // APPMODEL_ERROR_NO_PACKAGE
+ || ex.HResult == unchecked((int)0x8000000D)); // E_ILLEGAL_STATE_CHANGE
+
///
/// Initializes a new instance of the class.
///
From 7a78e393b954fa620fdab2aa2cf3964eac566c92 Mon Sep 17 00:00:00 2001
From: Andriy Svyryd
Date: Thu, 21 May 2026 07:52:47 -0700
Subject: [PATCH 3/3] Apply suggestions from code review
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
---
src/Microsoft.Data.Sqlite.Core/SqliteConnection.cs | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/Microsoft.Data.Sqlite.Core/SqliteConnection.cs b/src/Microsoft.Data.Sqlite.Core/SqliteConnection.cs
index dd0d0ec7e40..4e7b17e5bbc 100644
--- a/src/Microsoft.Data.Sqlite.Core/SqliteConnection.cs
+++ b/src/Microsoft.Data.Sqlite.Core/SqliteConnection.cs
@@ -80,9 +80,11 @@ static SqliteConnection()
}
catch (TargetInvocationException ex) when (IsNoPackageIdentityException(ex.InnerException))
{
+ // Ignore the unpackaged-app "no package identity" case; ApplicationData.Current is unavailable there.
}
catch (InvalidOperationException ex) when (IsNoPackageIdentityException(ex))
{
+ // Ignore the unpackaged-app "no package identity" case; ApplicationData.Current is unavailable there.
}
if (currentAppData != null)
@@ -107,7 +109,7 @@ static SqliteConnection()
}
private static bool IsNoPackageIdentityException(Exception? ex)
- => ex is InvalidOperationException or COMException
+ => (ex is InvalidOperationException or COMException)
&& (ex.HResult == unchecked((int)0x80073D54) // APPMODEL_ERROR_NO_PACKAGE
|| ex.HResult == unchecked((int)0x8000000D)); // E_ILLEGAL_STATE_CHANGE