MSBuild中如何正确获取AppData本地目录路径?
MSBuild获取本地AppData目录的正确实现
你之前尝试的写法存在两类语法问题,无法正确拿到路径,以下是两种可直接运行的正确写法:
- 写法1:调用
GetFolderPath方法传枚举对应数值Environment.SpecialFolder.LocalApplicationData的枚举整型值为28,MSBuild属性函数支持直接传整型参数调用该方法:<PropertyGroup> <AppDataLocalDir>$([System.Environment]::GetFolderPath(28))</AppDataLocalDir> </PropertyGroup> - 写法2:直接读取系统环境变量(更简洁)
MSBuild原生支持直接读取进程环境变量,和资源管理器中使用%LOCALAPPDATA%的逻辑完全一致,不需要调用.NET方法:<PropertyGroup> <AppDataLocalDir>$(LOCALAPPDATA)</AppDataLocalDir> </PropertyGroup>
之前错误写法的问题说明
AppDataLocalDir1、AppDataLocalDir2:MSBuild属性函数不支持直接嵌套访问枚举类型成员,不管是用::还是.连接枚举值的写法都无法被解析,最终会返回空字符串AppDataLocalDir3、AppDataLocalDir4:缺少属性函数必需的$前缀,MSBuild会把括号内的内容当做普通文本直接赋值,不会执行函数调用
你可以加一个编译时打印的Target验证取值结果:
<Target Name="CheckAppDataPath" AfterTargets="Build"> <Message Text="本地AppData路径:$(AppDataLocalDir)" Importance="high" /> </Target>
内容的提问来源于stack exchange,提问作者Mike Rosenblum
相关产品推荐
相关产品推荐

