2011-09-30 50 views
8

語境
當調試(與調試菜單F5)Visual Studio解決方案,處理稱爲MyApp.vshost.exe已創建。當你停止調試猥褻 - 我的意思是使用停止調試菜單SHIFT + F5 不出現等待一個代碼行像Application.Exit() - 這個過程沒有被殺死。解決 「命令 」TASKKILL/F/IM MyApp.vshost.exe「 與退出代碼128」 錯誤

有時,當您稍後再次開始調試應用程序時,會出現一條錯誤消息,指出該文件(顯然,它是調試使用的文件:bin\Debug\MyApp.vshost.exe)已被使用。

這就是爲什麼我添加到Build事件,此命令行:taskkill /F /IM MyApp.vshost.exe

問題
MyApp.vshost.exe進程不存在,Visual Studio是有時在編譯的時候拋出一個錯誤,從而防止打造應用程序:

Error c:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets 
The command "taskkill /F /IM MyApp.vshost.exe" exited with code 128. 

我發現的唯一現有解決方案是刪除生成事件。

問題
有沒有解決該錯誤消息,而無需去除生成事件的方法嗎?

編輯

我想最好的解決辦法是檢索命令的返回碼(errorlevel),則返回0,如果它等於128是否有可能做到這一點在生成事件該項目的?

+0

你可以擴展你的應用程序正在做什麼?例如,您是否通過Office Interop位與不在處理的應用程序(如Excel或Word)連接? – Kev

+0

@Kev:我的所有應用程序都有問題 - _Windows表單項目_和_Windows services_有些不能使用Excel或Word。我擁有的最簡單的應用程序是一個可以在MSSQL數據庫中檢查定時器並執行簡單任務的服務。 – Otiel

+0

任何解決方案,類似的問題使用msbuild:MSBUILD:警告MSB3073:命令「DEL」C:\ Clientes \ *。*「/ q/f/s」退出代碼128. – Kiquenet

回答

15
taskkill /F /IM MyApp.vshost.exe 2>&1 || exit /B 0 
+6

這對我有用,除了我有問題,直到我刪除雙管道,並使它成爲一個單一管道'||'到'|' –

+1

我建議使用條件測試:'taskkill/f/fi「pid gt 0」/ im MyApp.vshost.exe' [Source](http://stackoverflow.com/a/15748825/426315) – itsho

+0

同樣在這裏。在VS 2015中,單管作品 taskkill/f/im excel.exe 2>&1 |退出/ B 0 –

2

正如你可以禁用的Visual Studio宿主進程的臨時措施:

How to: Disable the Hosting Process

要禁用託管進程

打開Visual Studio中的一個項目。

在項目菜單上,單擊屬性。

單擊調試選項卡。

清除啓用Visual Studio宿主進程複選框。

這樣做可能會或可能是不期望的副作用:

通常,當託管進程被禁用:

開始調試.NET Framework應用程序 所需要的時間增加。

設計時錶達式評估不可用。

部分信任調試不可用。

-1

可能以管理員權限運行,具有完全權限的IDE? (我知道這是曾經微軟提過的)

+0

Nah,沒有以管理員身份運行IDE。 – Otiel

2

MyApp.vshost.exeVisual Studio hosting process。此過程的目的是改善調試體驗。如果你殺了這個過程你自己Visual Studio會重新創建它。如果你想擺脫它,你可以在項目的調試屬性(C#如圖所示)關閉宿主進程:

Debug project properties

你描述你的感受錯誤「的過程已經在使用」。我不認爲自己經歷過這種情況,但在工作PC上,在調試後構建時遇到了很大的麻煩。看起來MyApp.exe被鎖定,不能被覆蓋(「文件已被使用」,而不是「進程」)導致構建失敗。相信病毒掃描程序(Microsoft Forefront)會導致這些問題,但在公司環境中,我無法關閉掃描程序來測試我的假設。

在很多情況下,禁用託管進程不會對您的調試體驗產生顯着影響。

+0

這是正確的,它是_「file already in use」_而不是_「process」_。我編輯了我的Q. – Otiel

相關問題