代码之家  ›  专栏  ›  技术社区  ›  JamesG

如何让VisualStudio使用/RunExchange并提供程序命令行参数?

  •  2
  • JamesG  · 技术社区  · 15 年前

    我有一个命令行可执行文件的解决方案文件。我想通过调试器运行我的可执行文件,使用不同的输入,而不需要我的交互,同时还要将其输出设置为日志文件。

    例如,这就是我想要的:

    devenv /DebugExe "myprogram.exe" "my inputs"
    

    加载VS并自动设置程序输入。但是,我想一遍又一遍地用不同的输入到我的程序中,然后再挖掘输出文件。所以我最近发现,但不起作用的是:

    devenv /RunExit "myprogram.exe" "my input set" /Out out1.log
    devenv /RunExit "myprogram.exe" "a different input set" /Out out2.log
    ...
    

    有办法吗?同样,重要的一点是,我可以将一堆运行排队,然后挖掘输出文件以获得它们的输出。

    2 回复  |  直到 15 年前
        1
  •  1
  •   JamesG    15 年前

    虽然我确实找到了做我想做的事的方法,但我不喜欢。所以我会等一段时间,然后把我自己的答案标记为接受。

    我真正需要和想要的是我在问题中所说的:

    devenv /RunExit sln "input args" /Out out.log
    

    问题是VS不允许这样做,“input args”是无效的,这与您使用say/DebugExe不同,但随后又涉及到手动操作,这对我没有帮助。因此,在我用来动态调用devenv的脚本中,我每次都使用regex将sln文件中的“Arguments=”行替换为适当的参数。然后此命令行工作:

    devenv /RunExit sln /Out out%x%.log
    

    sln的每个调用都被修改为包含新的参数集,因此每次运行时,我都会在输出的%x%.log文件中得到不同的输出(每次运行时,我都会用不同的名称命名日志文件,以便跟踪哪个日志文件被输入到哪个日志文件)。谢谢大家收看。

        2
  •  0
  •   NaN    15 年前

    我想做类似的事情:在我的例子中,我的一个参数是一个文件系统路径,它可以包含一个必须被引用的空格,在批处理文件中必须被引用的字符串中。我增强了命令行可执行文件的代码,除了命令行参数之外,还查看了环境变量(environment.GetEnvironmentVariable)。然后在每次调用devenv之前设置特定的环境变量值。