我正在尝试通过PHP编译可执行文件,其中msbuild编译我的C#源代码,大部分脚本依赖于正在创建的可执行文件,因此它必须等待msbuild编译源代码。
如果我没有放任何类型的while循环,它将编译正常并创建可执行文件,但问题是脚本的其余部分执行速度快,最终结果不正确。
所以目前我正在使用它..
exec('C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe C:\Users\Administrator\AppData\Roaming\Compile\Myprogram\Myprogram.sln /p:Configuration=Release');
while (!file_exists('C:\Users\Administrator\AppData\Roaming\Compile\Myprogram\bin\Release\Myprogram.exe')) sleep(1);
然而,在这种情况下,几乎就好像exec命令永远不会被运行一样。它陷入无限循环并最终超时,导致exe永远不会被编译。
有关正确方法的任何建议吗?
答案 0 :(得分:0)
尝试按以下方式运行:
$output = array();
$cmd = 'C:\Windows\Microsoft.NET\Framework\v3.5\MSBuild.exe C:\Users\Administrator\AppData\Roaming\Compile\Myprogram\Myprogram.sln /p:Configuration=Release && exit';
exec($cmd, $output);