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