主参数更改我的默认位置

时间:2013-04-08 00:01:17

标签: c# command-line-arguments main

当我将参数传递给Main函数static void Main(string[] args)时,我的应用程序的默认位置会更改为args[0]包含的任何内容。

例如,我有一个文件" test.txt"位于与应用程序exe相同的文件夹中。如果我打电话File.Open("test.txt", FileMode.Open);,打开文件就不会有任何问题。现在,如果我已经通过Main调用File.Open("test.txt", FileMode.Open);的参数将查找文件" test.txt"在args[0]的位置,而不是从exe位置。

我们说我的exe位于C:\users\application.exeargs[0]字符串为D:\files\music,行File.Open("test.txt", FileMode.Open);将尝试打开文件{{ 1}}而不是D:\files\music\test.txt

如何解决此问题,以便我仍然可以访问该文件" test.txt"?

1 个答案:

答案 0 :(得分:0)

您正在使用相对路径 但是,相对路径是相对于当前目录的,而不是EXE文件的位置。

相反,您可以显式构建绝对路径:

Path.Combine(Path.GetDirectory(typeof(Program).Assembly.Location), "test.txt")