msbuild
msbuild copied to clipboard
[Feature Request]: Expand $(~) to $(HOME) or $(USERPROFILE) depending on OS
Summary
Currently, you need to do something like the following to consistently get the ~ home directory in a cross-platform way:
<PropertyGroup>
<UserProfileHome Condition="'$([MSBuild]::IsOSUnixLike())' == 'true'">$(HOME)</UserProfileHome>
<UserProfileHome Condition="'$([MSBuild]::IsOSUnixLike())' != 'true'">$(USERPROFILE)</UserProfileHome>
</PropertyGroup>
It would be awesome if the well-known shorthand ~ (even PowerShell Core knows it) could be used directly in MSBuild as a built-in envvar alias for either $(HOME) or $(USERPROFILE) depending on the current OS, just like pwsh does it.
Background and Motivation
No particular problem, just a desire for more consistency across developer tooling in the ecosystem (following the lead from pwsh).
Proposed Feature
Summary contains the proposal, which would be to consider ~ as an alias to either Home or UserProfile envvar names in Unix-like vs Windows.
Alternative Designs
No response
Or MsbuildHomeDir ?
Team triage: @baronfel what do you think of this suggestion?
It seems reasonable to me, but we should check for consistency with the Runtime's SpecialFolders enum in addition to various popular shells like bash, zsh, fish, and pwsh.
@danmoseley that would be confusing, since it might mean the MSBuild home dir (i.e. where msbuild.exe lives).