public override bool CanExecute(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)) { return(conf.CustomCommands.CanExecute(entry, CustomCommandType.Execute, context, configuration)); } return(entry.OnGetCanExecute(context, configuration)); } else if (item is WorkspaceItem) { return(((WorkspaceItem)item).OnGetCanExecute(context, configuration)); } else if (item is SolutionItem) { return(((SolutionItem)item).OnGetCanExecute(context, configuration)); } else { throw new InvalidOperationException("Unknown item type: " + item); } }