Один и тот же код ведет себя по-разному в консольном приложении и приложении WPF.
Когда я вызываю метод в приложении WPF, он возвращает true, даже если SQL Server CE не установлен; однако тот же код, запущенный в консольном приложении, возвращает false.
Я нашел способ, но кажется, что два ведут себя из одного и того же кода, один в консольном приложении и один в приложении WPF! Что имеет значение?
Я записал каждый шаг в шоке, чтобы увидеть, как он возвращает true в WPF
public static bool IsSQLCeV40Installed()
{
var result = false;
try
{
System.Reflection.Assembly.Load("System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91");
result = true;
_logger.Info($"IsSQLCeV40Installed: IsSqlCe {result}");
}
catch (System.IO.FileNotFoundException)
{
_logger.Info("IsSQLCeV40Installed: File Not Found Exception");
}
catch (Exception)
{
_logger.Info("IsSQLCeV40Installed: General Exception");
}
return result;
}
WPF печатает это:
IsSQLCeV40Installed: IsSqlCe & returns true
Консольное приложение регистрирует это:
IsSQLCeV40Installed: File Not Found Exception & returns false
Однако оба должны возвращаться, как это делает консольное приложение, если на компьютере не установлен SQL Server CE!