2011-06-14 42 views
1

以下两段是背景 - 他们只是解释为什么我需要做这样一个奇怪的事情。如果你不在乎,你可以跳过它直接回答问题。
我是Vim的用户,我开始学习C#。当然,我想使用MSBuild作为我的makeprg。我想绑定热键进行常见的开发操作 - BuildClean运行。由于我想在全球设置我的热键,因为每个项目中的文件名称都不相同,所以我遇到了一个问题。使MSBuild的Exec任务显示交互式外壳

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

现在,这是我的问题:与GCC/MinGW的makefile不同,它们只是运行shell命令的简单批处理文件,MSBuild使用它自己的一组命令并在内部运行它们。这意味着Exec任务运行程序时不需要shell - 我可以打开windows,但是我不能用它来测试交互式shell程序。

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

回答

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”命令并继续前进。


+0

它的工作原理!我必须在文件名之前删除反斜杠(显然PathTo变量已经有一个反斜杠),并且我还添加了一个命令,在shell关闭之前等待按键。我结束了这个: null & exit "”/> – 2011-06-15 19:49:12