コード例 #1
0
        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
            });
        }
コード例 #2
0
 public override void Execute(RunConfigContext context)
 {
     context.ExecutionProvider.Execute(null);
 }