C#2008 SP1
我使用下面的代码:
dt.ReadXml("%AppData%\\DateLinks.xml");
但是,我得到一个异常,指向运行我的应用程序的位置:
找不到路径'D:\ Projects \ SubVersionProjects \ CatDialer \ bin \ Debug \%AppData%\ DateLinks.xml'的一部分 .
我以为 %AppData%
应该找到相对路径 . 当我去 Start|Run|%AppData%
windows explorer带我到那个目录 .
我无法将完整路径放入,因为每台客户端计算机上的用户不同 .
非常感谢任何建议,
9 回答
你也可以使用
扩展
%AppData%
变量 .在.net2.0中你可以使用变量
Application.UserAppDataPath
我不认为将%AppData%放在这样的字符串中会起作用 .
尝试
这对我来说是一个控制台应用程序 -
BEST 方式使用AppData目录, IS 使用Environment.ExpandEnvironmentVariable方法 .
原因:
它用有效的目录或其他东西替换你的字符串的一部分
它不区分大小写
简单易行
这是一个标准
适合处理用户输入
例子:
记住一些用户键入
%AppData%
,一些%appdata%
和一些%APpData%
你不想最终得到:如果未设置环境变量,则不是您的错(除非 IS ) . 我通常不会告诉人们重新发明轮子,但是在我第一次走向另一条路并意识到这是一个坏主意之后 .
只是想在我的mvc应用程序中共享另一种访问“App_Data”文件夹的方式,以防有人需要这个 .
如果您正在谈论ASP.NET,那么路径就不同了 .
我找不到任何指向/ App_Data for ASP.NET的'SpecialFolder'值 .
相反,你需要这样做:
(注意:您不需要MVC控制器中的“当前”属性)
如果还有另一种'abstract'方式来到
App_Data
会喜欢听到如何 .对于ASP.NET,需要在应用程序池上设置
Load User Profile
设置,但这还不够 .\Windows\System32\inetsrv\Config\applicationHost.config
中有一个名为setProfileEnvironment
的隐藏设置,由于某种原因,默认情况下会关闭,而不是documentation中所述 . 您可以更改默认值或在应用池上设置默认值 . 然后Environment
类上的所有方法都将返回正确的值 .要获取AppData目录,最好使用
GetFolderPath
方法:%AppData%
是一个环境变量,它们不会在.NET中的任何位置自动扩展,尽管您可以明确使用Environment.ExpandEnvironmentVariable方法来执行此操作 . 我仍然强烈建议您使用GetFolderPath
,因为正如JohannesRössel在评论中指出的那样,在某些情况下可能不会设置%AppData%
.最后,要创建示例中显示的路径: