-1

我有一个程序作为计划任务运行了很长一段时间。我对其进行了一项更改,甚至与 TextReader 无关,并将 .exe 的副本放回服务器(Server 2003 R2 SP2)上,现在当您从计划任务运行程序时或只需双击 .exe以下行尝试从 C:\Documents and Settings\user\ 读取文件 IPAddressMonitor.ini,而不是在 .exe 位于 C:\IPAddressMonitor 的文件夹中。知道为什么吗?

TextReader tr = new StreamReader("IPAddressMonitor.ini");
4

1 回答 1

1

使用反射来获取可执行文件的路径 - 只要您的 .ini 与可执行文件位于同一文件夹中(或与之相关),您就不会再遇到此问题:

static public string AssemblyDirectory
{
    get
    {
        string codeBase = Assembly.GetExecutingAssembly().CodeBase;
        UriBuilder uri = new UriBuilder(codeBase);
        string path = Uri.UnescapeDataString(uri.Path);
        return Path.GetDirectoryName(path);
    }
}

或者

Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)

有关更多信息,请参阅此 SO 帖子

于 2014-05-02T20:27:21.433 回答