dotnet / roslyn-tools

Tools used in Roslyn based repos
MIT License
103 stars 75 forks source link

Gracefully handle absence of .corext/Configs/default.config #1407

Closed RikkiGibson closed 2 months ago

RikkiGibson commented 2 months ago

This is in preparation for an upcoming VS change which is removing certain corext files from the repo. As part of that work we expect to also start using Microsoft.Net.Compilers.Toolset for the toolset instead of VS.Tools.Roslyn.

The particular Roslyn change which will copy Microsoft.Net.Compilers.Toolset to VSSetup/DevDivPackages in the official build I haven't gotten working yet. However I think we might still be able to use RIT to insert successfully without it. We can't adjust the specific code paths for updating the toolset until we get the new toolset shipping in that directory though.

Test inserting into branch with no default.config: https://dev.azure.com/devdiv/DevDiv/_git/VS/pullrequest/543224 Compare with insertion into main: https://dev.azure.com/devdiv/DevDiv/_git/VS/pullrequest/543205?_a=files

Testing vs build with new toolset package: https://dev.azure.com/devdiv/DevDiv/_git/VS/pullrequest/543201

@dibarbet @Cosifne @jaredpar for review

RikkiGibson commented 2 months ago

@Cosifne @dibarbet Please take a look as VS plans to merge the change to remove default.config soon

Cosifne commented 2 months ago

🤔Just to check, the future plan is Microsoft.CodeAnalysis.Compilers would carry the complier payload (Microsoft.Net.Compilers.Toolset) into VS? (So it means we always update the toolset version in every insertion?)

RikkiGibson commented 2 months ago

🤔Just to check, the future plan is Microsoft.CodeAnalysis.Compilers would carry the complier payload (Microsoft.Net.Compilers.Toolset) into VS? (So it means we always update the toolset version in every insertion?)

Yes though it appears that VS has been building without corext in main since at least sometime in 2023, so we've been using the compiler included in msbuild to compile without knowing. I'm working on adjusting the VS build to use Microsoft.Net.Compilers.Toolset.

See https://dev.azure.com/devdiv/DevDiv/_git/VS/pullrequest/543201

The change on VS side we are reacting to is really just the removal of the default.config file and bunch of other files irrelevant to us. To my understanding, it is already not used in the actual build.