Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何正确获取应用程序的目录?_C#_Console_Directory_Publish_Appdata - Fatal编程技术网

C# 如何正确获取应用程序的目录?

C# 如何正确获取应用程序的目录?,c#,console,directory,publish,appdata,C#,Console,Directory,Publish,Appdata,我制作了一个小的控制台应用程序(第一次是用c#发布的)。但是我不能使用我的资源文件。我用文本文件可以给它。当我使用调试目录时,它起作用了 我的目标是创建如下目录: 应用程序地图 +application.exe +设置 资源图 +configurations.txt 记录器 + 现在,如果我尝试访问它发送给我的配置文件: C:\Users\\AppData\Local\Apps\2.0\D01L7N51.9EW\R7HB7NAB.B7Y \选择uu0000000000000000 0001.00

我制作了一个小的控制台应用程序(第一次是用c#发布的)。但是我不能使用我的资源文件。我用文本文件可以给它。当我使用调试目录时,它起作用了

我的目标是创建如下目录: 应用程序地图 +application.exe +设置 资源图 +configurations.txt 记录器 +

现在,如果我尝试访问它发送给我的配置文件:
C:\Users\\AppData\Local\Apps\2.0\D01L7N51.9EW\R7HB7NAB.B7Y
\选择uu0000000000000000 0001.0000 92af5262ce6f49d8

而我期待的是
C:/Users//Documents//+resources/config.txt

我试过了

string dir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
Console.WriteLine(dir);
&&

&&

但我总是在appdata地图上结束

那么:

System.IO.Path.GetDirectoryName(Application.ExecutablePath);

您可以简单地使用
Application.StartupPath
(),但结果将始终取决于您放置/安装可执行文件的位置

如果您始终希望指向当前用户的
文档
文件夹(在操作系统中注册为特殊文件夹),如您的示例所示,您可以使用:

String path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
或者(但风险由您自己承担,因为安全性要低得多):

使用第一种或第二种方法检索到正确的
文档
文件夹路径后,请将其与最后一部分合并:

path = Path.Combine(path, "resources/config.txt");
有关这两种方法的更多信息:


您的应用程序从何处运行(哪个文件夹)?@mjwills该应用程序将发布到mydocuments映射中,但我希望能够将其放置在任何位置,以便访问我正在尝试访问的txt文件。我想它正在appdata文件夹的某个地方“运行”。(我还没有出版c#publishing的经验)。我不知道是否可以,也不知道如何更改。ExecutablePath不适用于控制台应用程序:(Application.StartupPath仅适用于窗体应用程序:/n不适用于控制台。其他选项非常有用,谢谢。我希望使应用程序易于访问(因为用户需要提供txt文件)因此,使用这些代码是可能的,但我认为如果我可以让用户将txt配置文件放在应用程序文件夹中(这样他们就可以将其移动到任何地方(桌面/文档/子文件夹等),这将是“更安全的”我想第一个选项是最好的。很高兴能为您提供帮助。如果您认为我的回答解决了您的问题,请将其标记为已接受!谢谢!
String path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
String path = Path.Combine(Environment.ExpandEnvironmentVariables("%userprofile%"), "Documents");
path = Path.Combine(path, "resources/config.txt");