Frage

Ich arbeite an einem Compact Framework 2.0-Projekt, und ich versuche, ein Programm „B“, um aus einem anderen Programm „A“ mit Process.Start. Ich habe dies mehrere Male zuvor getan, aber ich bin in einige seltsame Fragen rund um diese Zeit.

Programm „B“ tut Start, aber es verursacht eine Missing, sagte mir im Grunde, dass es eine bestimmte Baugruppe fehlt, dass sie verwiesen hat. Das Problem ist, dass die Montage DLL genau dort ist, im selben Ordner wie Programm „B“. Wenn ich einen Doppelklick auf Programm „B“, läuft es richtig ohne Missing, ist es nur, wenn sie mit Process.Start in Programm „A“ ins Leben gerufen, dass dieses Problem auftritt. Ich habe absolut keine Ahnung, was hier los ist. Ich versuchte, die Working Eigenschaft ohne Glück zu setzen. Irgendwelche Ideen, warum das Programm kann seine Referenzen nicht geladen werden, wenn sie durch Process.Start ausgeführt? Dank

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

EDIT Ich dachte nur an etwas ... Beide Programm "A" und das Programm "B" verwenden, um die DLL das Programm "B" nicht geladen ist. Wenn zwei Programme nicht die gleiche DLL zur gleichen Zeit geladen werden können, dann ist das das Problem. Ist dies der Fall ist?

War es hilfreich?

Lösung 2

Nun habe ich es arbeiten, indem sie die referenzierte Code Duplizierung auf Assembly Programm B und alle Verweise zu entfernen. Es ist bei weitem nicht elegant, aber ich konnte es nicht auf andere Weise zu arbeiten. Wenn jemand eine Idee hat, was möglicherweise schief gegangen haben würde ich es sehr schätzen. Es könnte sich als nützlich ein andermal kommen. Dank

Andere Tipps

Wie funktioniert Speicherdruck Blick auf das Gerät? Wenn das Programm B auf Assembly C beruht, aber es gibt nicht genügend Arbeitsspeicher (virtuellen oder physischen) Baugruppe C zu laden, dann werden Sie eine Missing bekommen (statt eines OutOfMemoryException, die ich immer gedacht, würde mehr Sinn machen).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top