private Dictionary <string, Dictionary <DatabaseEnvironment, DataScript> > EnumerateDataScripts(string databaseProjectDirectoryPath, DataScriptType dataScriptType) { DirectoryInfo dataScriptsDirectoryInfo = new DirectoryInfo(Path.Combine(Path.GetDirectoryName(databaseProjectDirectoryPath), "_Data", dataScriptType.ToString())); Dictionary <string, Dictionary <DatabaseEnvironment, DataScript> > dataScripts = new Dictionary <string, Dictionary <DatabaseEnvironment, DataScript> >(); if (dataScriptsDirectoryInfo.Exists) { FileInfo[] dataScriptFiles = dataScriptsDirectoryInfo.GetFiles("*.sql", SearchOption.AllDirectories); List <string> failedScripts = new List <string>(); foreach (FileInfo staticDataFileInfo in dataScriptFiles) { try { DataScript dataScript = new DataScript { Name = Path.GetFileNameWithoutExtension(staticDataFileInfo.Name), Type = dataScriptType, Environment = this.ParseEnvironment(staticDataFileInfo.Directory.Name), Path = staticDataFileInfo.FullName }; // Check whether scripts with same name already exist if (dataScripts.ContainsKey(dataScript.Name)) { dataScripts[dataScript.Name].Add(dataScript.Environment, dataScript); } else { dataScripts.Add(dataScript.Name, new Dictionary <DatabaseEnvironment, DataScript> { { dataScript.Environment, dataScript } }); } } catch (Exception ex) { failedScripts.Add(staticDataFileInfo.FullName); } } } return(dataScripts); }