Domanda

Sto lavorando su un progetto Compact Framework 2.0, e sto cercando di lanciare un programma di "B" dal di dentro un altro programma "A" usando Process.Start. Ho fatto più volte in passato, ma sto correndo in alcuni problemi strani questa volta.

Programma "B" fa lancio, ma provoca una MissingMethodException, in pratica mi dice che manca una certa assemblea che si è fatto riferimento. Il problema è che l'assemblea è dll proprio lì, nella stessa cartella del programma "B". Se fa doppio clic sul programma "B", viene eseguito correttamente senza MissingMethodException, è solo quando lanciato con Process.Start nel programma di "A" che questo problema si verifica. Non ho assolutamente idea di quello che sta succedendo qui. Ho provato a impostare la proprietà WorkingDirectory senza fortuna. Tutte le idee sul perché il programma non può caricare i propri riferimenti quando eseguito attraverso Process.Start? Grazie

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();

Modifica Ho solo pensato a qualcosa ... Entrambi programma "A" e il programma "B" usare il dll che il programma "B" non è carico. Se due programmi non possono caricare la stessa DLL, allo stesso tempo, allora questo è il problema. E 'questo il caso?

È stato utile?

Soluzione 2

Il pozzo I ha reso il lavoro da duplicare il codice di riferimento durante il montaggio del programma di B e la rimozione di tutti i riferimenti. E 'lontano dalla elegante, ma non ho potuto farlo funzionare in altro modo. Se qualcuno ha qualche idea di quello che potrebbe avere sbagliato andato sarei molto grato. Potrebbe tornare utile in un altro momento. Grazie

Altri suggerimenti

Come funziona sguardo pressione della memoria sul dispositivo? Se Programma B si basa su Assembly C, ma non v'è memoria insufficiente (virtuale o fisico) per caricare il montaggio C, allora si otterrà una MissingMethodException (invece di un OutOfMemoryException, che ho sempre pensato che avrebbe più senso).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top