【发布时间】:2012-11-27 15:09:32
【问题描述】:
可能重复:
How do I find out what directory my console app is running in with C#?
如何获取运行程序的控制台的当前工作目录,以便我可以解析作为程序参数传递的相对路径?
假设我把我的程序放在这里:c:\tools\program.exe
但我从不同的地方调用它。假设我在这里:C:\Users\Me\Documents\ 我运行这个命令program.exe --src=somefile.txt --dest=subdir\otherfile.txt
Environment.CurrentDirectory 和 System.Reflection.Assembly.GetExecutingAssembly().Location 将返回 c:\tools 但我希望能够解析与 C:\Users\Me\Documents\ 相关的 somefile.txt 和 subdir\oterfile.txt 路径。
====== 更新 ======
感谢您的帮助。
Environment.CurrentDirectory似乎按预期工作。事实证明,在我的情况下,问题是由 Xenocode 的 Postbuild 工具(现在称为 Spoon Virtual Application Studio)引起的,我偶尔会使用该工具将所有程序文件(包括 dll、配置等)“打包”到一个可执行文件中。它非常方便,但在这种情况下,“虚拟化”功能搞砸了我程序的Environment变量。我已经设法解决了这个问题。
【问题讨论】:
-
这可能会有所帮助:stackoverflow.com/questions/275689/….
-
好吧,如果那些文件像参数一样过去,可能是简单的解决方案只是保存过去的路径,或者不?
-
你是如何调用 exe 的?是否设置了路径环境变量?
-
@PanosRontogiannis - 是的,我已经设置了 PATH 变量,所以我不必每次都输入完整的程序路径。
-
您是从命令提示符手动调用它,还是从 C# 程序以编程方式调用它?