通常当我在C#中构建一个可以消化命令行参数的应用程序时,如果这些参数是文件路径字符串,我可以选择使用相对路径和绝对路径来引用计算机上的特定文件并使用它在该计划中。
在我的上一个项目中,如果我从命令提示符给它一个相对路径,我的应用程序就不起作用了。但在VS 2010的调试模式下,它会消化相对路径。在命令提示符下,它需要一个绝对路径才能工作。
答案 0 :(得分:4)
您需要设置工作目录。请参阅:Directory.SetCurrentDirectory Method
示例:
System.IO.Directory.SetCurrentDirectory( System.AppDomain.CurrentDomain.BaseDirectory );
在调试版本中,默认情况下将当前目录设置为debug \ bin。
指定要调试的程序的工作目录。在Visual C#中,工作目录是默认情况下从\ bin \ debug启动应用程序的目录。
http://msdn.microsoft.com/en-us/library/2kf0yb05.aspx
您还可以使用 Assembly.GetEntryAssembly()或 Assembly.GetExecutingAssembly()检索程序集的路径,然后使用Location属性或CodeBase属性。
答案 1 :(得分:1)
您可以自己将相对路径转换为绝对路径,如下所示:
if (!Path.IsPathRooted(path))
path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\" + path;
或者将当前目录更改为可执行路径:
string exePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
Directory.SetCurrentDirectory(exePath);