Pregunta

Estoy trabajando en un proyecto Compact Framework 2.0, y estoy tratando de poner en marcha un programa de "B" desde dentro de otro programa "A" por medio Process.Start. He hecho esto varias veces antes, pero me estoy quedando con algunos problemas extraños en esta ocasión.

Programa "B" hace lanzamiento, pero causa una MissingMethodException, básicamente me dice que le falta una cierta asamblea que se ha hecho referencia. El problema es que el conjunto .dll es allí mismo, en la misma carpeta que el programa "B". Si hago doble clic en el programa "B", se ejecuta correctamente sin MissingMethodException, es sólo cuando se lanzó con Process.Start en el programa "A" que se produce este problema. Tengo absolutamente ninguna idea de lo que está pasando aquí. He intentado establecer la propiedad WorkingDirectory sin suerte. Alguna idea de por qué el programa no puede cargar sus referencias cuando se ejecuta a través Process.Start? Gracias

System.Diagnostics.Process proc = new System.Diagnostics.Process();
            ProcessStartInfo startInfo = new ProcessStartInfo(programBFullPath, "argument");

            //I've been changing these two properties, have tried shell execute with both false and true, tried setting working directory and not setting it also
            startInfo.UseShellExecute = false;
            startInfo.WorkingDirectory = programBDirectory;

            proc.StartInfo = startInfo;
            proc.Start();

editar Me acaba de ocurrir algo ... Tanto el programa "A" y el programa "B" utiliza el .dll que el programa "B" no es de carga. Si dos programas no pueden cargar la misma .dll al mismo tiempo, entonces ese es el tema. Es este el caso?

¿Fue útil?

Solución 2

Bueno, yo hizo trabajar duplicando el código de referencia en el conjunto del programa de B y la eliminación de todas las referencias. Está lejos de ser elegante, pero no pude conseguir que funcione de otra manera. Si alguien tiene alguna idea de lo que podría haber ido mal me sería de gran aprecio. Podría ser útil en otro momento. Gracias

Otros consejos

¿Cómo se ve la presión de memoria en el dispositivo? Si el programa B se basa en la Asamblea C, pero no hay suficiente memoria (virtual o física) para cargar el ensamblado de C, entonces obtendrá un MissingMethodException (en lugar de un OutOfMemoryException, que siempre pensé que tendría más sentido).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top