msbuild icon indicating copy to clipboard operation
msbuild copied to clipboard

[Feature Request]: Expand $(~) to $(HOME) or $(USERPROFILE) depending on OS

Open kzu opened this issue 1 year ago • 4 comments

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

kzu avatar May 21 '24 00:05 kzu