我想写一个 pester 测试,它在 Linux 和 Windows 上都有效。该测试创建了 vscode 片段,我想确保它在正确的位置创建它们。
我想让我的测试尽可能通用,并根据操作系统在正确的地方自动测试。
我知道在 Windows 上我可以使用 $env:AppDAta 但该变量在 linux 上不存在。 我可以用什么来代替,它可以在两个平台上工作。
干杯!
最佳答案
您不能跨平台依赖环境变量,但 .NET Core 确实通过其 [Environment]::GetFolderPath()
以跨平台方式提供已知/特殊文件夹。方法。
并非抽象中定义的所有位置在所有平台上都可用,但 ApplicationData
是:
[Environment]::GetFolderPath('ApplicationData')
对于用户名 jdoe
,上面的代码产生以下路径:
- Windows:
C:\Users\jdoe\AppData\Roaming
(等同于:$env:APPDATA
) - Linux:
/home/jdoe/.config
(等同于:$HOME/.config
) - macOS:
/Users/jdoe/.config
(等同于:$HOME/.config
)
另请注意 this proposal on GitHub ,这表明通过新的命名空间 $sf:
(对于 s特别 folder)以更符合 PowerShell 习惯的方式公开这些文件夹,所以$sf:ApplicationData
相当于上面的命令。
如果您希望看到它的实现,请在那里发出您的声音。即使是简单的“竖起大拇指”也有帮助。
关于linux - 是否有适用于 Windows 和 Linux 的 vscode 片段路径变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52978780/