【发布时间】:2017-06-02 01:17:28
【问题描述】:
当表单加载时,我有带有以下代码部分的 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”的列表,该列表获取配置文件的记录并用该配置文件的数据填充一些textboxes。
我的问题如下:当我在 Visual Studio 中运行我的程序时,它会在 textboxes 中正确加载记录。
当我在 Visual Studio 之外运行我的程序时,它也会正确加载记录
但是
当我尝试像MonitorMail.exe那样从命令提示符运行我的程序时(因为它应该是这样运行的),程序运行但不显示文本框中的数据。
在试图了解为什么会发生这种情况后,我注意到这与
pathfile = Directory.GetCurrentDirectory();
我得出的结论是,因为我将 pathfile 更改为 pathfile="complete path of the Configuration.txt",所以当我从 cmd 击中它时,它应该是正常的。
知道为什么Directory.GetCurrentDirectory(); 会影响cmd 吗?还是我错过了什么?
【问题讨论】:
-
你为什么不把它改成使用
DirectoryInfo,然后从那里做FileInfo[],你可以得到一个你正在寻找处理的特定文件。将 BasePath 存储在您的 app.config 文件中.. 如果不是.. 那么您需要了解 GetCurrentDirectory 查看启动进程的应用程序所在的位置...例如,当您在调试器中运行应用程序时,它会查看 @ 987654334@目录 -
@MethodMan 我使用
Directory.GetCurrentDirectory();因为我的应用程序将在不同的 PC 上使用,所以我需要每台 PC 获取我的配置文件所在的当前目录 -
我找到了我的问题的解决方案,我遵循了这个Question中的答案