C#Directory.GetCurrentDirectory()

C#Directory.GetCurrentDirectory(),c#,winforms,C#,Winforms,我有windows窗体应用程序,在窗体加载时包含以下部分代码 public MonitorMail() { InitializeComponent(); pathfile = Directory.GetCurrentDirectory(); pathfile = pathfile + @"\Log\Configuration.txt"; var Lista = LoadConfigFile.LoadConfig(pathfile);

我有windows窗体应用程序,在窗体加载时包含以下部分代码

public MonitorMail()
{           
    InitializeComponent();

    pathfile = Directory.GetCurrentDirectory();
    pathfile = pathfile + @"\Log\Configuration.txt";

    var Lista = LoadConfigFile.LoadConfig(pathfile);

    if (Lista.Count > 0)
    {                
        SwithMailText.Text = Lista[0];
        Excel_Textbox.Text = Lista[1];
        LogFileText.Text = Lista[2];
        MailServerText.Text = Lista[3];
        FromText.Text = Lista[4];
        SslText.Text = Lista[5];
        UserText.Text = Lista[6];                
    }
}
正如您在这段代码中看到的,我声明了一个名为“Lista”的列表,该列表获取配置文件的记录,并用该配置文件的数据填充一些
文本框

我的问题是:当我在VisualStudio中运行我的程序时,它会在那些
文本框中正确加载记录

当我在Visual Studio之外运行程序时,它也会正确加载记录

但是

当我尝试从命令提示符运行我的程序时(因为它应该是这样运行的),比如
monitorail.exe
程序会运行,但不会在文本框中显示数据

在试图理解为什么会发生这种情况后,我注意到这与

pathfile = Directory.GetCurrentDirectory();
我之所以得出这样的结论,是因为我将
pathfile
更改为
pathfile=“complete path of the Configuration.txt”
,所以当我从
cmd
中点击它时,它会正常工作


知道为什么
Directory.GetCurrentDirectory()影响
cmd
?还是我缺少了什么?

你在评论中写道:“我需要每台电脑都能得到我的.exe所在的当前目录”,但这不是
目录.GetCurrentDirectory()
所做的

你需要

string myPath=System.Reflection.Assembly.GetEntryAssembly().Location


相反。这将为您提供包括文件名在内的完整路径。如果您需要的话,您可以使用该位置的
目录

为什么不将其更改为使用
DirectoryInfo
,然后从那里执行
FileInfo[]
,您可以获得要处理的特定文件。将基本路径存储在app.config文件中。。如果不是。。然后您需要了解GetCurrentDirectory查看启动进程的应用程序所在的位置。。。例如,当您在调试器中运行应用程序时,它会查看
Bin
Directory@MethodMan我使用
Directory.GetCurrentDirectory()因为我的应用程序将在不同的电脑上使用,所以我需要让每台电脑都能找到我的配置文件所在的当前目录。我找到了问题的解决方案。我遵循了这篇文章中的答案。对不起,我指的是我的
配置文件所在的位置…因为我从这个文件加载数据