【问题标题】:How can I set a relative path in App.Config?如何在 App.Config 中设置相对路径?
【发布时间】:2019-08-08 20:51:21
【问题描述】:

我正在开发 WPF C#,我正在使用 Visual Studio 2017。

设置appSettings的文件路径。 我想在 App.Config 文件中定义一个相对路径。如果我尝试使用绝对路径,它会起作用。

这项工作:

<appSettings file="C:\Users\jordan\AppData\Roaming\Test\appfile.config">

但如果我尝试使用相对路径,它就不起作用了。

这不起作用:

<appSettings file="${AppData}\Roaming\Test\appfile.config">

<appSettings file="~\AppData\Roaming\Test\appfile.config">

<appSettings file="~/AppData/Roaming/Test/appfile.config">

etc...

你有想法在这里设置一个相对路径吗?或者只是为什么我不能这样做?

谢谢

【问题讨论】:

    标签: c# .net wpf app-config appsettings


    【解决方案1】:

    当前漫游用户的应用程序特定文件夹由枚举 Environment.SpecialFolder 中的一个条目定义,它是 ApplicationData 条目

    您可以使用Environment.GetFolderPath 传递枚举条目来检索与此枚举关联的路径

     string appData = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
    

    所以在您的配置文件中,您可以简单地存储最后一部分 Test\appfile.config 并使用此代码

     string appData = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
     string configLocation = Configuration.AppSettings["file"].ToString();
     string file = Path.Combine(appData, configLocation);
    

    【讨论】:

    • 感谢您的回答,但这并不是我真正想要的。我的目标是在 appSettings 的文件属性中设置相对路径。您的答案是在 App.config 中存储路径。 AppSettings 允许我使用外部配置文件,我需要设置这个外部文件的路径。
    • 啊!是的,那么我误解了这个问题。但是你有没有尝试在你的路径前面不使用任何东西?它应该是相对于你的程序集的当前位置,通常这是在VS中调试时的BIN\DEBUG文件夹和部署场景中的exe存储位置
    • 换句话说。在 Visual Studio 中运行您的应用程序时,我会尝试在 BIN\DEBUG 下创建一个名为 Test 的子文件夹,并将文件 appfile.config 放在那里并更改
    • 是的,我试过了,它在 bin/debug 中工作,但我必须使用外部文件夹。如果我使用 exe 文件夹,我无法为每个用户/计算机设置特定的配置。这就是为什么我必须使用外部文件夹作为 AppData。
    • 看来这个问题已经被带有用户配置选项的新 applicationSettings 部分解决了。这将为每个用户创建单独的设置。这里有一些关于这些设置的讨论stackoverflow.com/questions/460935/…
    猜你喜欢
    • 2011-01-19
    • 1970-01-01
    • 1970-01-01
    • 2019-05-03
    • 2011-06-06
    • 1970-01-01
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    相关资源
    最近更新 更多