WPF应用程序CommandLineArguments目录不存在

时间:2011-07-23 14:19:45

标签: wpf command-line

我的问题很独特,我找不到任何解决方案。

我有一个处理命令行参数的WinForms程序(它被集成到上下文菜单中,并使用其打开的目录名称进行调用)。它像魅力一样工作。调用如下:myprogram.exe '%1' - 其中%1是目录名称。

我尝试使用相同的方法创建WPF应用程序:集成到上下文菜单中,具有相同的签名。 (myWPFprogram.exe '%1'),使用Environment.GetCommandlineArguments()

程序开头有一个目录存在检查。在WinForms程序中,它从未被触发(因为它是从我点击的目录运行的,所以它应该是奇怪的不存在)。通过我的WPF程序,我总是收到消息:

  

发生错误:提供的目录('d:\ workbench \ dialogs')不存在。

我点击了该目录,因此它已存在。

其他奇怪的事情是,如果目录名称中有空格,它会像旧DOS时一样被“截断”:

  

发生错误:提供的目录('d:\ workbe~1 \ testsp~1')不存在。

如何从WPF命令行获取正确的目录名?我的方法有什么问题?

1 个答案:

答案 0 :(得分:1)

问题在于您将参数括在单引号中。这不起作用,程序收到的参数实际上类似'd:\workbench\dialogs'(注意单引号)。

如果要解决此问题,请使用双引号。它们被认可,您将要收到的论点如下:d:\workbench\dialogs。我不知道为什么这适用于你的WinForms应用程序,因为它应该表现完全相同。

长名称转换为短名称的事实可能是出于兼容性目的而不应该打扰你。这两个版本的路径应该同样合适。如果要获取路径的正常版本,可以使用Path.GetFullPath()