我想通過編譯我的C#源代碼的msbuild編譯可執行文件,大部分腳本依賴於創建的可執行文件,所以它必須等待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永遠不會被編譯。
任何關於正確的方式去建議這個建議?
確定運行Web服務器的用戶運行此命令的權限,並且所有適當的環境變量被設置。 PHP應該阻塞,直到外部程序完成,使您的while循環不必要。 – Orangepill
是的,我相信如此,因爲如果我刪除while循環,exec命令運行良好,msbuild編譯可執行文件。問題是腳本的其餘部分在這種情況發生之前就會運行。 – user2379231