private static FdoCache CreateCache(ProjectId projectId)
{
Debug.Assert(projectId.IsValid);
WriteSplashScreen(string.Format(Properties.Resources.kstidLoadingProject, projectId.UiName));
Form owner = s_splashScreen != null ? s_splashScreen.Form : Form.ActiveForm;
using (var progressDlg = new ProgressDialogWithTask(owner))
{
FdoCache cache = FdoCache.CreateCacheFromExistingData(projectId, s_sWsUser, s_ui, FwDirectoryFinder.FdoDirectories, CreateFdoSettings(), progressDlg);
EnsureValidLinkedFilesFolder(cache);
// Make sure every project has one of these. (Getting it has a side effect if it does not exist.)
// Crashes have been caused by trying to create it at an unsafe time (LT-15695).
var dummy = cache.LangProject.DefaultPronunciationWritingSystem;
cache.ProjectNameChanged += ProjectNameChanged;
cache.ServiceLocator.GetInstance<IUndoStackManager>().OnSave += FieldWorks_OnSave;
SetupErrorPropertiesNeedingCache(cache);
return cache;
}
}