public override void Execute(IProgressMonitor monitor, IBuildTarget item, ExecutionContext context, ConfigurationSelector configuration) { if (item is SolutionEntityItem) { SolutionEntityItem entry = (SolutionEntityItem)item; SolutionItemConfiguration conf = entry.GetConfiguration(configuration) as SolutionItemConfiguration; if (conf != null && conf.CustomCommands.HasCommands(CustomCommandType.Execute)) { conf.CustomCommands.ExecuteCommand(monitor, entry, CustomCommandType.Execute, context, configuration); return; } entry.OnExecute(monitor, context, configuration); } else if (item is WorkspaceItem) { ((WorkspaceItem)item).OnExecute(monitor, context, configuration); } else if (item is SolutionItem) { ((SolutionItem)item).OnExecute(monitor, context, configuration); } else { throw new InvalidOperationException("Unknown item type: " + item); } }