2011-09-30 19 views
8

Contexto
Al depurar (con el menúdepuración F5) una solución de Visual Studio, un proceso de llamado MyApp.vshost.exe se crea. Al detener el depuración indecentemente - me refiero a usar el menúDetener depuración SHIFT +F5 y no esperar para una línea de código como ocurre Application.Exit() - este proceso no se mató.resolver "el comando "taskkill/F/IM MyApp.vshost.exe" salido con código 128" error

A veces, cuando luego vuelve a iniciar la depuración de la aplicación, aparece un mensaje de error que indica que el archivo (obviamente, es el archivo utilizado por la depuración: bin\Debug\MyApp.vshost.exe) ya está en uso.

Por eso he añadido a los eventos de generación de esta línea de comandos: taskkill /F /IM MyApp.vshost.exe

Problema
Cuando el proceso MyApp.vshost.exe no existe, Visual Studio es a veces lanzando un error en tiempo de compilación, lo que impide la construcción la aplicación:

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

La única solución existente que encontré es eliminar el evento de compilación.

Pregunta
¿Hay una manera de resolver el mensaje de error sin quitar la acumulación de eventos?

EDITAR

Estoy pensando que la mejor solución sería la de recuperar el código de retorno (errorlevel) del comando, a continuación, devolver 0 si es igual a 128. ¿Es posible hacerlo en los eventos de generación ¿del proyecto?

+0

¿Puede ampliar lo que está haciendo la aplicación? Por ejemplo, ¿se conecta con aplicaciones fuera de proceso como Excel o Word a través de los bits de Office Interop? – Kev

+0

@Kev: Tengo el problema con todas mis aplicaciones: _Windows form projects_ y _Windows services_ y algunas no funcionan con Excel ni Word. La aplicación más simple que tengo es un servicio que tiene un temporizador de comprobación en una base de datos MSSQL y ejecuta tareas simples. – Otiel

+0

cualquier solución, problema similar con msbuild: MSBUILD: advertencia MSB3073: El comando "DEL" C: \ Clientes \ *. * "/ Q/f/s" salió con el código 128. – Kiquenet

Respuesta

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

Esto funcionó para mí, excepto que tuve problemas hasta que eliminé las tuberías dobles, y la convertí en una sola tubería '||' en '|' –

+1

Sugeriría usar pruebas condicionales: 'taskkill/f/fi "pid gt 0"/im MyApp.vshost.exe' [Fuente] (http://stackoverflow.com/a/15748825/426315) – itsho

+0

Lo mismo aquí. En VS 2015, las tuberías simples funcionan taskkill/f/im excel.exe 2> & 1 | exit/B 0 –

2

Como medida temporal se puede desactivar el proceso de Estudio de acogida visual:

How to: Disable the Hosting Process

para desactivar el proceso de alojamiento

Abrir un proyecto en Visual Studio.

En el menú Proyecto, haga clic en Propiedades.

Haga clic en la pestaña Depurar.

Desactive la casilla Habilitar el proceso de alojamiento de Visual Studio.

Los efectos secundarios de hacer esto puede o no ser deseable:

En general, cuando el proceso de alojamiento está desactivada:

El tiempo necesario para iniciar la depuración de aplicaciones .NET Framework aumenta

La evaluación de la expresión en tiempo de diseño no está disponible.

La depuración de confianza parcial no está disponible.

-1

ejecutando quizás como administrador con todos los privilegios del IDE? (Sé que esto fue sugerido una vez de Microsoft)

+0

Nah, no ejecuta el IDE como administrador. – Otiel

2

El MyApp.vshost.exe es el Visual Studio hosting process. El propósito de este proceso es mejorar la experiencia de depuración. Si matas este proceso tú mismo, Visual Studio lo volverá a crear. Si desea deshacerse de él puede desactivar el proceso de alojamiento en las propiedades de depuración para el proyecto (C# muestra aquí):

Debug project properties

Usted describe el error experimenta como "el proceso ya está en utilizar". No creo haberlo experimentado yo mismo, pero en una PC de trabajo estoy teniendo grandes problemas al construir después de la depuración. Parece que MyApp.exe está bloqueado y no se puede sobrescribir ("el archivo ya está en uso", no "proceso"), lo que hace que la compilación falle. Creen que un escáner de virus (Microsoft Forefront) está causando estos problemas, pero al estar en un entorno corporativo no puedo apagar el escáner para probar mi hipótesis.

En muchos casos, deshabilitar el proceso de alojamiento no tendrá un efecto notorio en su experiencia de depuración.

+0

Correcto, es _ "archivo ya en uso" _ y no _ "proceso" _. Edité mi Q. – Otiel

Cuestiones relacionadas