【问题标题】:Debugging C# on the command line: ">"-character在命令行上调试 C#:">"-character
【发布时间】:2013-11-07 19:19:27
【问题描述】:

我正在为客户创建一个小型命令行工具并尝试验证其输出。输出被写入命令行本身。由于它是一个相当大的文件,被用作输入文件,因此写入命令行的输出很大,我希望输出重定向到一个文件。 通常我使用这样的命令行参数将输出重定向到文件:

a.exe ./input.txt > ./ouput.txt

但是,在我的程序中,我尝试验证输入:

static void Main(string[] args)
{
    if (args.Length != 1)
        throw new ArgumentException();
    ...

args 现在是:

args[0] = ./input.txt
args[1] = >
args[2] = ./ouput.txt

老实说,我个人仍然只期望一个参数,因为文件已创建,因此 shell 确实理解我的意思。所以......我做错了什么?我应该使用args 还是别的什么? 提前谢谢!

【问题讨论】:

  • 猜猜你将不得不更改验证码。
  • 尝试加括号,像这样:(a.exe ./input.txt) > ./ouput.txt
  • 对我来说,它按预期工作。你也可以试试a.exe ./input.txt>./ouput.txt(不带空格)吗?
  • args.Length 应该是 1 如您所愿。你是如何调用你的工具的?你是在 shell 中输入命令行吗?
  • Dan-o:我考虑过使用外部库 (stackoverflow.com/questions/491595/…),但对于这么简单的事情,我只是不想打扰。在我的情况下,它也不会让任何事情变得更简单。 Alexandre:在 VS2012 中不能这样做,可以吗? AlexFilipovici:如果我不在我的文件名周围使用任何引号,那将会起作用 ;-) 无论如何,谢谢!

标签: c# visual-studio-2012 command-line-arguments


【解决方案1】:

您是否通过 Visual Studio 传递参数?只有取消勾选启用 Visual Studio 托管进程才会起作用。

图片和解释来自here

【讨论】:

  • 我确实在寻找答案,但没有找到那篇文章。谢谢!
猜你喜欢
  • 2012-09-16
  • 1970-01-01
  • 2019-05-13
  • 1970-01-01
  • 2013-02-09
  • 1970-01-01
  • 1970-01-01
  • 2012-03-19
  • 1970-01-01
相关资源
最近更新 更多