关于winforms:C#Directory.GetCurrentDirectory()

C# Directory.GetCurrentDirectory()

当窗体加载

时,我具有带有以下代码部分的Windows窗体应用程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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 "的列表,该列表获取配置文件的记录,并用该配置文件的数据填充一些textboxes

我的问题如下:当我在Visual Studio中运行程序时,它正确地将记录加载到那些textboxes中。

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

但是

当我尝试像MonitorMail.exe一样从命令提示符下运行程序(因为它应该如何运行)时,该程序会运行,但不会在文本框中显示数据。

试图理解为什么会发生这种情况后,我发现这与

有关

1
pathfile = Directory.GetCurrentDirectory();

我之所以得出结论,是因为我将pathfile更改为pathfile="complete path of the Configuration.txt",所以当我从cmd击中它时,它应该按预期工作。

有人知道为什么Directory.GetCurrentDirectory();影响cmd吗?还是我想念的东西?


您在注释中写道:"我需要每台PC来获取我的.exe所在的当前目录",但这不是Directory.GetCurrentDirectory()所做的...

您需要

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

代替。这样就给您完整的路径,包括文件名。如果需要,可以使用位置的Directory