Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Draft implementation for RAR-as-a-service. This is not intended to be merged, any final implementation would go in as separate small PRs + unit tests.
Known issues
The MSBuild node integration was the last piece implemented, so isn't as thoroughly designed / tested as everything else. I've largely tested this project as a standalone process (the executable produced by
RarTest.csproj
) to use as a baseline for performance. The node integration is still WIP and I'm moving stuff around, but here are the active items:RarTest.exe
which is functionally the same. Unsure what causes this difference since the node is always done with setup by the time the RAR task is reached. Possibly related to multiple nodes being launched.MSBuild.exe
.Temp\MSBuildTemp\
dir despite using `CommunicationsUtilities.Trace().PipeSecurity
to named pipe breaks ability to connect, so temporarily commented out (unknown why this pattern doesn't affect other node implementations)BackEnd\Components\Communications\NodeProviderOutOfProcBase
andShared\NodeEndpointOutOfProcBase
, so would ideally be derived. Unfortunately, the former has too many dependencies inMicrosoft.Build.csproj
to easily refactor intoShared
. The latter forces the named pipe to have a single server and keep a long-lived connection to the client, and is written around this assumption. This model does not work given multiple MSBuild nodes must send/receive on the pipe at any given time, even with an internal message queue (I've tried).