public int OnAfterOpenSolution(object pUnkReserved, int fNewSolution) { ThreadHelper.ThrowIfNotOnUIThread(); _solutionLoaded = true; SccEvents.OnSolutionOpened(true); GetService <IAnkhServiceEvents>().OnSolutionOpened(EventArgs.Empty); if (!SccProvider.IsActive) { return(VSErr.S_OK); } try { VerifySolutionNaming(); IAnkhSolutionSettings ss = GetService <IAnkhSolutionSettings>(); if (ss != null && ss.ProjectRoot != null) { string rootDir = Path.GetPathRoot(ss.ProjectRoot); if (rootDir.Length == 3 && rootDir.EndsWith(":\\", StringComparison.OrdinalIgnoreCase)) { DriveInfo di = new DriveInfo(rootDir); bool oldFs = false; switch ((di.DriveFormat ?? "").ToUpperInvariant()) { case "FAT32": case "FAT": oldFs = true; break; } if (oldFs) { IAnkhConfigurationService cs = GetService <IAnkhConfigurationService>(); if (!cs.GetWarningBool(AnkhWarningBool.FatFsFound)) { using (SccFilesystemWarningDialog dlg = new SccFilesystemWarningDialog()) { dlg.Text = Path.GetFileName(ss.SolutionFilename); if (DialogResult.OK == dlg.ShowDialog(Context)) { cs.SetWarningBool(AnkhWarningBool.FatFsFound, true); } } } } } } } catch (Exception ex) { IAnkhErrorHandler handler = GetService <IAnkhErrorHandler>(); if (handler.IsEnabled(ex)) { handler.OnError(ex); } else { throw; } } return(VSErr.S_OK); }