【问题标题】:C# Directory.GetCurrentDirectory()C# Directory.GetCurrentDirectory()
【发布时间】: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中的答案

标签: c# winforms


【解决方案1】:

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

你需要

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

相反。这为您提供了包括文件名在内的完整路径。如果您需要,可以使用 Location 的 Directory

【讨论】:

  • 对不起,我的意思是我的configuration file 在哪里...因为我从这个文件加载数据
猜你喜欢
  • 1970-01-01
  • 2012-07-03
  • 2012-10-06
  • 1970-01-01
  • 2021-12-09
  • 2022-12-12
  • 1970-01-01
  • 1970-01-01
  • 2014-07-07
相关资源
最近更新 更多