当表单加载
时,我有一个带有以下代码部分的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"的List。哪个List获取配置文件的记录,并用该配置文件的数据填充一些textboxes
。
我的问题如下:当我在Visual Studio中运行我的程序时,它会在那些textboxes
中正确加载记录。
当我运行我的程序在Visual Studio之外运行时,它也会正确加载记录
BUT
当我尝试从命令提示符运行我的程序时(因为它应该如何运行)如MonitorMail.exe
程序运行但不显示文本框中的数据。
在试图理解为什么会发生这种情况后,我注意到这与
有关pathfile = Directory.GetCurrentDirectory();
我对此作出了结论,因为我将pathfile
更改为pathfile="complete path of the Configuration.txt"
,因此当我从cmd
点击它时,它应该正常工作。
知道为什么Directory.GetCurrentDirectory();
会影响cmd
?或者我错过了什么?
答案 0 :(得分:1)
您在评论中写道:"我需要为每台PC获取我的.exe所在的当前目录" ,但这不是Directory.GetCurrentDirectory()
所做的。 ..
你需要
string myPath = System.Reflection.Assembly.GetEntryAssembly().Location;
代替。这将为您提供包括文件名在内的完整路径。如果您需要,可以使用位置Directory
。