C# 主参数更改我的默认位置

C# 主参数更改我的默认位置,c#,command-line-arguments,main,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))将在args[0]的位置查找文件“test.txt”,而不是从e

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

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

假设我的exe位于
C:\users\application.exe
,并且
args[0]
的字符串是
D:\files\music
,行
File.Open(“test.txt”,FileMode.Open)
将尝试打开文件
D:\files\music\test.txt
,而不是
C:\users\test.txt


如何修复此问题,以便我仍然可以访问文件“test.txt”

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

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

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

感谢您的快速回复,这解决了我的问题,我也更好地理解了相对路径的工作原理。