Search code examples
msbuildappdata

MSBuild: How Get AppData Local Directory?


I need help getting the AppData Local directory for MSBuild.

File Explorer:

%LOCALAPPDATA%

C#:

System.Environment.GetFolderPath(System.Environment.SpecialFolder.LocalApplicationData)

PowerShell:

$([System.Environment]::GetFolderPath("LocalApplicationData"))

I've tried the following four variations to get it for MSBuild:

<PropertyGroup>
    <AppDataLocalDir1>$([System.Environment]::GetFolderPath([System.Environment.SpecialFolder]::LocalApplicationData))</AppDataLocalDir1>
    <AppDataLocalDir2>$([System.Environment]::GetFolderPath([System.Environment.SpecialFolder.LocalApplicationData]))</AppDataLocalDir2>
    <AppDataLocalDir3>([System.Environment]::GetFolderPath("LocalApplicationData"))</AppDataLocalDir3>
    <AppDataLocalDir4>([System.Environment]::GetFolderPath('LocalApplicationData'))</AppDataLocalDir4>
</PropertyGroup>

I feel that my syntax must be close, as this works to get the current date:

<PropertyGroup>
    <Today>$([System.DateTime]::Now.ToString('yyyy.MM.dd'))</Today>
</PropertyGroup>

I have found sources that state that MSBuild can call [System.Environment]::GetFolderPath, but I cannot find any that show the syntax for passing in an argument.

Thanks a lot in advance.


Solution

  • From "Property Functions: GetFolderPath" the syntax for the enum for GetFolderPath is:

    <PropertyGroup>
        <AppDataLocalDir>$([System.Environment]::GetFolderPath(SpecialFolder.LocalApplicationData))</AppDataLocalDir>
    </PropertyGroup>