[VS2015] 命令列執行 devenv,編譯結束後卡住五分鐘?
今天在用 Visual Studio 2015 編譯專案程式時,
遇到了超級奇怪的問題…
在命令列裡執行 devenv xxx.sln /rebuild release 時,
明明就已經編譯結束,
可是卻停留在 “Rebuild All: 1 succeeded. 0 failed. 0 skipped” 這個訊息,
直到 5 分鐘之後,才會回到命令列提示字元:
每次執行,devenv 都會卡不多不少的 5 分鐘才結束,
而專案裡有好幾個 .sln 要編譯,
這問題讓整個編譯的速度從原本只要兩分鐘不到,
變成了幾十分鐘 Orz…
用 Process Explorer 和 Process Monitor 觀察一下,
也看不出來 devenv 到底在等什麼東西…
上網查了一下,有人也有遇到類似的問題,
看起來像是 devenv 在執行時,會把一個 VsHub.exe 帶起來,
當編譯結束時,devenv 似乎是在等候 VsHub 結束,
可是因為某種未知狀況,導致 VsHub 要等待 5 分鐘逾時後才會下去:
解決方法的話,有人是說可以刪除或改名這個目錄
C:\Program Files (x86)\Common Files\microsoft shared\VsHub
不過我自己試過,是沒有用處…
另一個目前實測有用的方法,是在命令列執行 devenv 指令前,
先手動把 Visual Studio 2015 執行起來 (不用開任何專案也沒關係)~
從 Process Explorer 可以看到,
這個手動執行的 VS2015 的 devenv.exe process,
會帶一個 VsHub.exe process 起來,
而且在 VS2015 視窗關閉前,都會一直存在:
這時再去命令列執行 devenv /rebuild 指令時,
就不會再跑出另外一個 VsHub.exe process,
而且看起來也不會卡住 5 分鐘了~
不確定 VS2015 是否有更新修掉這個問題,
不過至少這個方法可以勉強擋一陣子囉~
參考資料:visual studio – How do I disable VsHub.exe in the system tray? – Stack Overflow