C#Directory.GetCurrentDirectory()
我有windows窗体应用程序,在窗体加载时包含以下部分代码C#Directory.GetCurrentDirectory(),c#,winforms,C#,Winforms,我有windows窗体应用程序,在窗体加载时包含以下部分代码 public MonitorMail() { InitializeComponent(); pathfile = Directory.GetCurrentDirectory(); pathfile = pathfile + @"\Log\Configuration.txt"; var Lista = LoadConfigFile.LoadConfig(pathfile);
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()代码>因为我的应用程序将在不同的电脑上使用,所以我需要让每台电脑都能找到我的配置文件所在的当前目录。我找到了问题的解决方案。我遵循了这篇文章中的答案。对不起,我指的是我的配置文件所在的位置…因为我从这个文件加载数据