diff --git a/src/Microsoft.Data.Sqlite.Core/SqliteConnection.cs b/src/Microsoft.Data.Sqlite.Core/SqliteConnection.cs index 3062c0f923c..4e7b17e5bbc 100644 --- a/src/Microsoft.Data.Sqlite.Core/SqliteConnection.cs +++ b/src/Microsoft.Data.Sqlite.Core/SqliteConnection.cs @@ -78,9 +78,13 @@ static SqliteConnection() { currentAppData = appDataType?.GetRuntimeProperty("Current")?.GetValue(null); } - catch (TargetInvocationException) + catch (TargetInvocationException ex) when (IsNoPackageIdentityException(ex.InnerException)) { - // Ignore "The process has no package identity." + // 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) @@ -104,6 +108,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. ///