예제 #1
0
		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				
			}
		}