使MSBuild的Exec任务显示交互式shell

时间:2011-06-14 23:15:42

标签: .net shell msbuild exec

以下两段是背景 - 他们只是解释为什么我需要做这么奇怪的事情。如果您不在乎,可以跳过它们并直接回答问题。
我是Vim用户,我开始学习C#。当然我想使用MSBuild作为我的makeprg。我想绑定热键以进行常见的开发操作 - 构建清理运行。由于我想在全局设置我的热键,我遇到了一个问题,因为每个项目中文件的名称都不同。

在GCC / MinGW中,这个问题可以很容易地解决 - 因为我已经将重要的文件名存储在变量中,我可以简单地添加到makefile目标来清理构建和运行程序,然后将热键绑定到“ :make!Clean“and”:make!Run“。所以我想我可以用MSBuild目标做同样的事情。它适用于带有Delete标记的 Clean (不确定我真的需要在.NET中清理,但你知道 - 习惯的力量),但是我有运行的问题

现在,这是我的问题:与GCC / MinGW的makefile不同,后者只是运行shell命令的聪明批处理文件,MSBuild使用它自己的一组命令并在内部运行它们。这意味着 Exec 任务在没有shell的情况下运行程序 - 我可以打开窗口,但我不能用它来测试交互式shell程序。

有没有办法说服MSBuild给我一个交互式shell?

1 个答案:

答案 0 :(得分:2)

你有没有尝试过这个的变种,

<Exec Command="start $(COMSPEC) /k &quot;$(PathTo)\My.exe &amp; exit&quot;" />

逃避后,大致可以解决这个问题,

C:\Windows\system32\cmd.exe /k "PathTo\My.exe & exit"

哪个会在命令shell中运行你的命令(/ k可能不是你正常使用的cmd开关),然后当你的交互式程序退出时,它将运行“exit”命令并继续。