我想能够做到这样的事情:
IO.Directory.Exists("%USERPROFILE%")
原因是我想指定一个我的应用程序将使用的目录,作为configuration文件中的纯文本。 在某些情况下,我会希望它嵌套在用户configuration文件下,在这种情况下,configuration文件会读取如下内容:
... LocalDbDirectory = %USERPROFILE%\Application Data\My Toolkit\ ...
或者我可能希望它位于networking位置,在这种情况下,它会读取如下内容:
... LocalDbDirectory = N:\Common\My Toolkit Databases\ ...
所以我需要能够用诸如IO.Directory.Exists(…)或等价的方法来解释速记符号。
有任何想法吗?
你需要通过Environment.ExpandEnvironmentVariables(path)
来运行它们。 其中路径是@"%USERPROFILE%\Application Data\My Toolkit\"
(对于不包含%%
格式化的标记的路径,这样做不会有什么坏处)
如果短手是有效的环境变量,则可以解析它们的值:
static void Main(string[] args) { string val = Environment.ExpandEnvironmentVariables("%USERPROFILE%"); Console.WriteLine(val); Console.Read(); }
从.NET 4开始,特殊文件夹支持包括用户配置文件:
Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);