我正在从一个普通的旧命令提示符运行我的控制台应用程序。我以两种方式运行它:
使用我认为是工作目录的可执行文件的相对路径。IE
C:\Working>.\path\to\my.exe -fileToRead file.txt
使用我的 $PATH$ 中的文件夹。IE
C:\Working>my.exe -fileToRead file.txt
file.txt
在C:\Working并且my.exe
是C:\Working\path\to。my.exe
将一个 XML 日志文件输出到工作目录。在我看来,这应该是 C:\Working,但文件实际上以C:\Working\path\to结尾。这并不适用于所有其他命令行应用程序。
我没有做任何奇怪或不标准的事情(我知道)。我试过只使用 XML 文件的文件名,"TestResult.xml"
还有Path.Combine(Environment.CurrentDirectory, "TestResult.xml")
. 两者最终都在可执行目录中,而不是我正在运行的目录。命令行参数文件参数被正确读取,所以我知道这是有效的。
澄清:基本上,我的问题是Environment.CurrentDirectory
和Assembly.GetExecutingAssembly().Location
是同一个目录,但不应该。
我在这里做错了什么?以及如何获取我执行的目录,而不是可执行文件的路径?(我意识到我对stackoverflow的许多问题有完全相反的问题)