2011-09-30 35 views
8

Context
Khi gỡ lỗi (với gỡ lỗi đơn F5) một giải pháp Visual Studio, một quá trình được gọi là MyApp.vshost.exe được tạo. Khi bạn ngừng gỡ lỗi indecently - Ý tôi là sử dụng Dừng gỡ lỗi đơn SHIFT +F5 và không chờ đợi một dòng mã như Application.Exit() xảy ra - quá trình này không được giết.Giải quyết "Lệnh "taskkill/F/IM MyApp.vshost.exe" thoát với mã 128" lỗi

Đôi khi, khi bạn bắt đầu lại lần nữa gỡ lỗi ứng dụng của bạn, một thông báo lỗi xảy ra, nói rằng tệp (rõ ràng, đó là tệp được sử dụng bởi gỡ lỗi: bin\Debug\MyApp.vshost.exe) đã được sử dụng.

Đó là lý do tại sao tôi thêm vào các sự kiện xây dựng dòng lệnh này: taskkill /F /IM MyApp.vshost.exe

Vấn đề
Khi quá trình MyApp.vshost.exe không tồn tại, Visual Studio đôi khi ném một lỗi tại thời gian xây dựng, do đó ngăn ngừa để xây dựng ứng dụng:

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

Giải pháp hiện tại tôi tìm thấy là xóa sự kiện xây dựng.

Câu hỏi
Có cách nào để giải quyết thông báo lỗi mà không xóa sự kiện xây dựng không?

EDIT

Tôi đang nghĩ đến giải pháp tốt nhất là để lấy mã trả lại (errorlevel) của lệnh, sau đó trở về 0 nếu nó bằng 128. Có thể làm điều đó trong các sự kiện xây dựng của dự án?

+0

Bạn có thể mở rộng ứng dụng mình đang làm không? Ví dụ, bạn đang giao tiếp với các ứng dụng quá trình như Excel hay Word thông qua các bit Office Interop? – Kev

+0

@Kev: Tôi gặp sự cố với tất cả các ứng dụng của mình - _Windows form projects_ và _Windows services_ và một số không hoạt động với Excel cũng như Word. Ứng dụng đơn giản nhất mà tôi có là một dịch vụ được kiểm tra bộ đếm thời gian trong cơ sở dữ liệu MSSQL và thực hiện các tác vụ đơn giản. – Otiel

+0

bất kỳ giải pháp, vấn đề tương tự bằng cách sử dụng msbuild: MSBUILD: cảnh báo MSB3073: Lệnh "DEL" C: \ Clientes \ *. * "/ Q/f/s" thoát với mã 128. – Kiquenet

Trả lời

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

Điều này làm việc cho tôi, ngoại trừ tôi có vấn đề cho đến khi tôi loại bỏ các đường ống đôi, và biến nó thành một đường ống đơn '||' thành '|' –

+1

Tôi sẽ đề nghị sử dụng thử nghiệm có điều kiện: 'taskkill/f/fi "pid gt 0"/im MyApp.vshost.exe' [Nguồn] (http://stackoverflow.com/a/15748825/426315) – itsho

+0

Tương tự tại đây. Trong VS 2015, các công trình đường ống đơn lẻ taskkill/f/im excel.exe 2> & 1 | exit/B 0 –

2

Như một biện pháp tạm thời, bạn có thể vô hiệu hóa các quá trình trực quan chủ Studio:

How to: Disable the Hosting Process

Để vô hiệu hóa quá trình lưu trữ

mở một dự án trong Visual Studio.

Trên menu Dự án, bấm Thuộc tính.

Nhấp vào tab Gỡ lỗi.

Xóa hộp kiểm Bật quy trình lưu trữ Visual Studio.

Các tác dụng phụ của việc này có thể hoặc không được mong muốn:

Nói chung, khi quá trình lưu trữ bị vô hiệu hóa:

Thời gian cần thiết để bắt đầu gỡ lỗi các ứng dụng .NET Framework tăng.

Đánh giá biểu thức thời gian thiết kế không khả dụng.

Gỡ lỗi tin cậy một phần không khả dụng.

-1

chạy có lẽ là quản trị viên có đầy đủ đặc quyền của IDE? (Tôi biết điều này đã được đề xuất một lần trong một thời gian từ Microsoft)

+0

Không, không chạy IDE với tư cách quản trị viên. – Otiel

2

MyApp.vshost.exeVisual Studio hosting process. Mục đích của quá trình này là cải thiện trải nghiệm gỡ lỗi. Nếu bạn tự mình giết quá trình này thì Visual Studio sẽ tạo lại nó. Nếu bạn muốn thoát khỏi nó, bạn có thể tắt quá trình lưu trữ trong các thuộc tính gỡ lỗi cho dự án (C# đưa ra ở đây):

Debug project properties

Bạn mô tả lỗi bạn gặp là "quá trình này là đã có trong sử dụng". Tôi không nghĩ rằng tôi đã trải nghiệm bản thân mình nhưng trên một máy tính làm việc tôi đang gặp rắc rối lớn khi xây dựng sau khi gỡ lỗi. Có vẻ như MyApp.exe bị khóa và không thể ghi đè ("tệp đã được sử dụng", không phải "xử lý") khiến quá trình xây dựng bị lỗi. Bởi niềm tin là một máy quét virus (Microsoft Forefront) đang gây ra những vấn đề này, nhưng trong môi trường công ty tôi không thể tắt máy quét để kiểm tra giả thuyết của tôi.

Trong nhiều trường hợp vô hiệu hóa quá trình lưu trữ sẽ không có ảnh hưởng đáng kể đến trải nghiệm gỡ lỗi của bạn.

+0

Đúng vậy, đó là _ "tệp đã được sử dụng" _ và không _ "quy trình" _. Tôi chỉnh sửa Q. – Otiel

Các vấn đề liên quan