如何让Visual Studio使用/ RunExit并提供我的程序命令行参数?

问题描述:

我有一个命令行可执行文件的解决方案文件。我想通过调试器运行带有不同输入的可执行文件,而不需要我的交互,同时还将其输出设置为日志文件。如何让Visual Studio使用/ RunExit并提供我的程序命令行参数?

例如,这是那种我想要的东西:

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 
... 

有没有什么办法做到这一点?同样重要的是,我可以排队一堆运行,并在稍后输出文件。

+0

你为什么要在调试器,而不是正常运行您的程序? – 2010-11-13 22:08:11

+0

该程序动态加载DLL,我想看到它的加载DLL。我通常通过加载调试器,运行它并检查输出窗口来做到这一点。我宁愿跳过所有的手动步骤。也许有更好的方法? – JamesG 2010-11-13 22:19:05

虽然我没有找到一种方法,做我想做的,我不喜欢它。所以我会等待一段时间,然后将自己的答案标记为已接受。

我真正需要的是什么,并希望是我在我的问题说:

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

的问题是,VS不允许这样,“输入ARGS”是无效的 - 不同于如果你使用说/ DebugExe,但是之后再次涉及手动工作,这对我没有帮助。所以在我用来动态调用devenv的脚本中,我使用了一个正则表达式来每次都用适当的参数替换sln文件中的“Arguments =”行。然后,此命令行工作:

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

每个呼叫的SLN修改为包含新的一组参数的个数,因此每次运行,我会在我得到了不同的输出%X%.log文件(这是我的名字每次运行都不同,所以我可以跟踪哪个日志文件转到哪个输入)。谢谢大家的收看。

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