You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CI/CD沙箱环境下.NET的Environment.GetFolderPath未遵循HOME环境变量的解决方案咨询

CI/CD沙箱环境下.NET的Environment.GetFolderPath未遵循HOME环境变量的解决方案咨询

我现在遇到一个CI/CD环境下的.NET程序问题,想请教大家怎么解决。我的构建环境把文件系统沙箱化到/tmp目录,沙箱里的程序没法访问原本的HOME目录,这里的HOME环境变量被强制设为/tmp,大部分应用都能正常适应,但依赖Environment.SpecialFolder.ApplicationData的.NET程序却出问题了。

为了测试,我写了个简单的C#控制台程序,用来打印几个特殊文件夹的路径:

Console.WriteLine("UserProfile: " + Environment.GetFolderPath(Environment.SpecialFolder.UserProfile));
Console.WriteLine("ApplicationData: " + Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData));
Console.WriteLine("LocalApplicationData:" + Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData));

在正常环境下执行dotnet run,输出是符合预期的:

UserProfile: /Users/mike
ApplicationData: /Users/mike/Library/Application Support
LocalApplicationData:/Users/mike/Library/Application Support

但当我把HOME设为/tmp(模拟CI/CD环境的情况)再运行时,结果就不对了:

mike@mac MyConsoleApp % bash
bash-3.2$ export HOME=/tmp
bash-3.2$ dotnet run
UserProfile: /tmp
ApplicationData: /Users/mike/Library/Application Support
LocalApplicationData:/Users/mike/Library/Application Support

你看,UserProfile正确变成了/tmp,但ApplicationData和LocalApplicationData还是指向我原来的用户目录/Users/mike,我本来以为这些特殊文件夹应该跟着HOME环境变量走的。

我试过设置DOTNET_CLI_HOME=/tmp,但完全没用。

想请教大家,有没有不用修改C#代码的方法,能让.NET框架把ApplicationData这类特殊文件夹的路径和HOME关联起来?

备注:内容来源于stack exchange,提问作者emmby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 10:43:01