private void GetTaskDatabaseForProject(SolutionProject solutionProject) { var fi = new FileInfo(solutionProject.FilePath); var nulahTaskFiles = fi.Directory.EnumerateFiles() .FirstOrDefault(x => x.Extension == $".{NULAH_DB_EXTENSION}"); if (nulahTaskFiles == null) { return; } if (_sqliteProvider.DataSourceExists(nulahTaskFiles.Name) == false) { var extensionlessFileName = Path.GetFileNameWithoutExtension(nulahTaskFiles.Name); _sqliteProvider.CreateOrRegisterDataSource(extensionlessFileName, nulahTaskFiles.FullName); var dbSchema = _sqliteProvider.Query <NulahDBMeta>(extensionlessFileName, $"SELECT * FROM [{nameof(NulahDBMeta)}] LIMIT 1"); if (dbSchema.FirstOrDefault() != null) { solutionProject.Database = dbSchema.First(); } else { // In the unlikely event that the task database isn't valid, unregister it _sqliteProvider.UnregisterDatasource(nulahTaskFiles.Name); } } }