Skip to content

Some X.A targets do not respect Inputs/Outputs timestamp invariant #2247

@garuma

Description

@garuma

I'm debugging an incremental compilation for a project of ours and I have identified at least 3 spots where X.A targets are using CopyIfChanged or a variant-thereof and thus breaking inputs/outputs invariant.

What I mean by this is that you have plenty of scenarios where some target Inputs are newer than Outputs causing the target to run yet those updated Inputs will end up generating the same Outputs content. Because of the logic of CopyIfChanged, this mean that no actual change is committed to Outputs and thus when the target finishes executing you have broken the invariant that Outputs always have to be newer that your Inputs.

Three places where I have seen this (there might be more):

  • _CopyIntermediateAssemblies (Outputs are also wrong for this one, they lack the satellites copy)
  • _GeneratePackageManagerJava
  • _ResolveLibraryProjectImports

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions