dotnet / msbuild

The Microsoft Build Engine (MSBuild) is the build platform for .NET and Visual Studio.
https://docs.microsoft.com/visualstudio/msbuild/msbuild
MIT License
5.22k stars 1.35k forks source link

[Performance]: AccelerateBuildsInVisualStudio Breaks FUTDC for Non-SDK Projects #10879

Open mruiz2112 opened 2 days ago

mruiz2112 commented 2 days ago

Issue Description

Setting AccelerateBuildsInVisualStudio to true causes the FUTDC to think that non-SDK projects aren't up to date, which breaks incremental builds. My company has some larger non-SDK web apps that we can't change to SDK-style and it's hurting our build performance.

Steps to Reproduce

WebApplication_NonSDK.zip

I attached a very small project with AccelerateBuildsInVisualStudio set to true. Notice that the project will continually build with no changes made between builds. Removing the property fixes the issue.

There is also a workaround by adding this condition: Condition="'$(UsingMicrosoftNETSdk)' == 'true'" But not all developers may notice this or catch this. Would be nice to have that check included in the code for the property.

Data

Incremental build (2nd time building w/ no changes after 1st build) takes 0.196s with AccelerateBuildsInVisualStudio set to true.

Incremental build takes 0.045s after removing AccelerateBuildsInVisualStudio.

In my company's codebase, we have 4 major non-SDK web apps that have this issue and it causes a performance degradation of about 30 seconds on our incremental builds.

Analysis

No response

Versions & Configurations

No response

Regression

Regression Details

No response

YuliiaKovalova commented 2 days ago

It looks like a dupe for the ticket: https://developercommunity.visualstudio.com/t/AccelerateBuildsInVisualStudio-keeps-pro/10683619 According to the investigation, the issue is in the project system, not in MSBuild.

mruiz2112 commented 2 days ago

What investigation? The only comments on that issue are from a bot and the original poster...

YuliiaKovalova commented 2 days ago

@mruiz2112 , sorry for the confusion. There is an internal ticket attached to this where the team can find more details.