protected override Task OnExecute(
            ProgressMonitor monitor,
            ExecutionContext context,
            ConfigurationSelector configuration,
            SolutionItemRunConfiguration runConfiguration)
        {
            TargetFrameworkMoniker framework = Project.TargetFramework.Id;

            if (Project.HasMultipleTargetFrameworks)
            {
                var frameworkContext = context?.ExecutionTarget as AspNetCoreTargetFrameworkExecutionTarget;
                if (frameworkContext != null)
                {
                    framework = frameworkContext.Framework;
                    if (!(configuration is DotNetProjectFrameworkConfigurationSelector))
                    {
                        configuration = new DotNetProjectFrameworkConfigurationSelector(configuration, frameworkContext.FrameworkShortName);
                    }
                }
            }

            if (IsSupportedFramework(framework))
            {
                return(OnExecute(monitor, context, configuration, framework, runConfiguration));
            }

            return(base.OnExecute(monitor, context, configuration, runConfiguration));
        }
        Task <Dictionary <string, List <FrameworkReference> > > GetFrameworkReferencesAsync(CancellationTokenSource tokenSource)
        {
            var config = IdeApp.IsInitialized ? IdeApp.Workspace.ActiveConfiguration : ConfigurationSelector.Default;

            return(Task.Run(async() => {
                var referenceMappings = new Dictionary <string, List <FrameworkReference> > ();
                foreach (TargetFrameworkMoniker framework in Project.TargetFrameworkMonikers)
                {
                    if (!CanGetFrameworkReferences(framework))
                    {
                        continue;
                    }

                    var frameworkConfig = new DotNetProjectFrameworkConfigurationSelector(config, framework.ShortName);
                    var references = await Project.GetFrameworkReferences(frameworkConfig, tokenSource.Token)
                                     .ConfigureAwait(false);

                    if (!tokenSource.IsCancellationRequested)
                    {
                        string key = GetMappingKey(framework);
                        referenceMappings [key] = references.ToList();
                    }
                }
                return referenceMappings;
            }));
        }