Skip to content

Prefer dotnet MSBuild.dll for worker nodes when hosted by dotnet.exe#5751

Closed
rainersigwald wants to merge 1 commit intomainfrom
dev/raines/avoid-msbuild-apphost
Closed

Prefer dotnet MSBuild.dll for worker nodes when hosted by dotnet.exe#5751
rainersigwald wants to merge 1 commit intomainfrom
dev/raines/avoid-msbuild-apphost

Conversation

@rainersigwald
Copy link
Copy Markdown
Member

When MSBuild is launched via dotnet.exe (e.g. dotnet build, dotnet msbuild), BuildEnvironmentHelper resolves CurrentMSBuildExePath to MSBuild.exe (the AppHost) because it prefers .exe over .dll. This causes all out-of-proc worker nodes to launch as MSBuild.exe AppHost processes, which seems to have regressed NuGet perf tests.

This change detects when the current process is dotnet.exe and the resolved MSBuild location is the AppHost, then substitutes MSBuild.dll so worker nodes are launched via dotnet.exe instead. This only applies to regular worker nodes (nodemode:1), not task host nodes (nodemode:2) which may need the AppHost for COM host object support.

When MSBuild is launched via dotnet.exe (e.g. dotnet build, dotnet msbuild),
BuildEnvironmentHelper resolves CurrentMSBuildExePath to MSBuild.exe (the
AppHost) because it prefers .exe over .dll. This causes all out-of-proc
worker nodes to launch as MSBuild.exe AppHost processes, which seems to
have regressed NuGet perf tests.

This change detects when the current process is dotnet.exe and the resolved
MSBuild location is the AppHost, then substitutes MSBuild.dll so worker
nodes are launched via dotnet.exe instead. This only applies to regular
worker nodes (nodemode:1), not task host nodes (nodemode:2) which may
need the AppHost for COM host object support.
@rainersigwald
Copy link
Copy Markdown
Member Author

Merged in MSBuild as dotnet/msbuild#13452

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants