protected internal virtual bool ComputeOutOfDateSources() { if (this.MinimalRebuildFromTracking || this.TrackFileAccess) { this.AssignDefaultTLogPaths(); } if (!this.MinimalRebuildFromTracking || this.ForcedRebuildRequired()) { this.SourcesCompiled = this.TrackedInputFiles; if ((this.SourcesCompiled == null) || (this.SourcesCompiled.Length == 0)) { this.SkippedExecution = true; return(this.SkippedExecution); } } else { this.sourceOutputs = new CanonicalTrackedOutputFiles(this, this.TLogWriteFiles); this.sourceDependencies = new CanonicalTrackedInputFiles(this, this.TLogReadFiles, this.TrackedInputFiles, this.ExcludedInputPaths, this.sourceOutputs, this.UseMinimalRebuildOptimization, this.MaintainCompositeRootingMarkers); ITaskItem[] sourcesOutOfDateThroughTracking = this.SourceDependencies.ComputeSourcesNeedingCompilation(false); this.SourcesCompiled = this.MergeOutOfDateSourceLists(sourcesOutOfDateThroughTracking, this.GenerateSourcesOutOfDateDueToCommandLine()); if (this.SourcesCompiled.Length == 0) { this.SkippedExecution = true; return(this.SkippedExecution); } this.SourcesCompiled = this.AssignOutOfDateSources(this.SourcesCompiled); this.SourceDependencies.RemoveEntriesForSource(this.SourcesCompiled); this.SourceDependencies.SaveTlog(); if (this.DeleteOutputOnExecute) { DeleteFiles(this.sourceOutputs.OutputsForSource(this.SourcesCompiled, false)); } this.sourceOutputs.RemoveEntriesForSource(this.SourcesCompiled); this.sourceOutputs.SaveTlog(); } if ((this.TrackFileAccess || this.TrackCommandLines) && string.IsNullOrEmpty(this.RootSource)) { this.RootSource = FileTracker.FormatRootingMarker(this.SourcesCompiled); } this.SkippedExecution = false; return(this.SkippedExecution); }
protected virtual void RemoveTaskSpecificOutputs(CanonicalTrackedOutputFiles compactOutputs) { }
protected virtual void AddTaskSpecificOutputs(ITaskItem[] sources, CanonicalTrackedOutputFiles compactOutputs) { }