microsoft / microsoft/MSBuildSdks

Traversal projects don't work with the Visual Studio Fast Up-to-date Check

Open
#594 5 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C#
Stars
508
Forks
94
Avg merge
6h 40m
Merged PRs (30d)
2

Description

VS's fast up-to-date check (FUTDC) performs a quick file timestamp check on a projects inputs and outputs to determine whether it needs to call MSBuild. When it can avoid doing so, builds are much faster.

However, this requires having both inputs and outputs to compare against.

Normally, building a project twice should make the second build a no-op. For a traversal project, the project will eternally be considered out-of-date.

Logging shows:

Output 'D:\repo\MyTraversalProject\Debug\net472\MyTraversalProject.dll' does not exist, not up-to-date.

This problem might be addressed by having the build for this project produce a dummy file in the intermediate (obj) folder, and referencing that file as a UpToDateCheckOutput item. On every build, touch that file.

It'll also have to stop listing the non-existent output file as an expected output.

For more info on this, see https://github.com/dotnet/project-system/blob/main/docs/up-to-date-check.md.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the traversal project build behavior and the Visual Studio Fast Up-to-date Check guidance in docs/up-to-date-check.md. Investigate how the project currently declares expected outputs, then verify that a build produces and touches an intermediate UpToDateCheckOutput while no longer reporting the nonexistent DLL; done means the second build is treated as up to date.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
build-system
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.