protected override Action <ITextControl> ExecutePsiTransaction(ISolution solution, IProgressIndicator progress) { return(textControl => { var buildProject = textControl.Document.GetPsiSourceFile(solution)?.GetProject(); if (buildProject == null) { return; } #if RESHARPER var runConfig = CreateRunConfig(solution, buildProject); var runConfigBuilder = solution.GetComponent <IRunConfigBuilder>(); var dte = solution.GetComponent <VsDtePropertiesFacade>().DTE; var nukeArgumentsFile = NukeApi.GetNukeArgumentsFilePath(buildProject); NukeApi.CreateNukeArgumentsFile(nukeArgumentsFile.FullPath, SkipDependencies, TargetName); var tempFileLifetime = NukeApi.StartNukeTempFileWatcher(nukeArgumentsFile, textControl.Lifetime); NukeApi.RestoreStartupProjectAfterExecution(tempFileLifetime, dte); NukeApi.TemporaryEnableNukeProjectBuild(tempFileLifetime, buildProject, solution, dte); var executionProvider = solution.GetComponent <ExecutionProviders>().GetByIdOrDebug(runConfig.DefaultAction); var context = new RunConfigContext { Solution = solution, ExecutionProvider = executionProvider }; runConfigBuilder.BuildRunConfigAndExecute(solution, context, runConfig); #else var nukeModel = buildProject.GetSolution().GetProtocolSolution().GetRdNukeModel(); nukeModel.Build.Fire(new BuildInvocation(buildProject.ProjectFileLocation.FullPath, TargetName.NotNull(), Debug, SkipDependencies)); #endif }); }
public override void Execute(RunConfigContext context) { context.ExecutionProvider.Execute(null); }