-
Notifications
You must be signed in to change notification settings - Fork 10.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Building E2ETests.csproj in VS is very slow #27115
Comments
Thoughts @wli3 and @dsplaisted❔ See the following from the description in particular
|
Including this in the DoI project for discussion in that context |
It is a pretty old change dotnet/msbuild#1018 . @dsplaisted do you have the context? |
Surprised that
|
Thanks for the feedback, everyone. I just re-tried this on VS 16.8.1 (with .NET Core 5.0.100) and it's no longer reproing for me. The build of E2ETests.csproj is now the same speed in VS as it is on the commandline, or in some cases faster because of the fast-up-to-date check. It doesn't clarify what was going on before, but something in the build toolchain or our repo build config has apparently changed and resolved this. I'll close it now since it doesn't seem like there's any other investigation/action that would make sense to take. |
One of our ASP.NET team-level goals when working within this repo is being able to run a single test on a code change in the inner loop in less than 1 minute. We can't currently satisfy this goal for any E2E test because
E2ETests.csproj
itself takes over a minute to build (on my laptop at least), and that doesn't include building whatever chain of runtime projects the developer is modifying. Note that I'm talking about VS builds here - it's significantly faster on the CLI.By collecting a binary build log, I see that
E2ETests.csproj
spends the vast majority of its time inside_GetProjectReferenceTargetFrameworkProperties
. This is part of the .NET Core SDK and has the following role:The log viewer also shows that this is calling a task
GetTargetFrameworks
on the whole transitive closure of referenced projects, and there apppear to be 102 of those.I don't know whether the SDK team would expect
_GetProjectReferenceTargetFrameworkProperties
to complete faster than this or not. It seems like either we're hitting an unusually bad case for it, or it just doesn't scale well. We should expect customer projects to contain > 100 transitive dependencies - that's not unusual at all.Alternatively perhaps the problem is within ASP.NET Core's project graph, or some other thing we're customizing during the build. It's also unclear why the perf is only this bad in VS, and not for CLI builds.
The text was updated successfully, but these errors were encountered: