protected override BuildResult Build (MonoDevelop.Core.IProgressMonitor monitor, SolutionEntityItem item, ConfigurationSelector configuration) { #if DEBUG monitor.Log.WriteLine("MonoGame Extension Build Called"); #endif try { var proj = item as Project; if (proj == null) { #if DEBUG monitor.Log.WriteLine("MonoGame Extension Null Project"); #endif return base.Build (monitor, item, configuration); } #if DEBUG foreach(var p in proj.GetProjectTypes()) { monitor.Log.WriteLine("MonoGame Extension Project Type {0}", p); } #endif if (!proj.GetProjectTypes().Any(x => supportedProjectTypes.ContainsKey(x))) return base.Build (monitor, item, configuration); var files = proj.Items.Where(x => x is ProjectFile).Cast<ProjectFile>(); foreach(var file in files.Where(f => f.BuildAction == "MonoGameContentReference")) { monitor.Log.WriteLine ("Found MonoGame Content Builder Response File : {0}", file.FilePath); platform = proj.GetProjectTypes().FirstOrDefault(x => supportedProjectTypes.ContainsKey(x)); if (!string.IsNullOrEmpty (platform)) { try { RunMonoGameContentBuilder(file.FilePath.ToString(), supportedProjectTypes[platform], monitor); } catch (Exception ex) { monitor.ReportWarning(ex.ToString()); } } } return base.Build (monitor, item, configuration); } finally { #if DEBUG monitor.Log.WriteLine("MonoGame Extension Build Ended"); #endif } }