Laden...

Programm startet nicht

Letzter Beitrag vor 17 Jahren 14 Posts 2.493 Views
Programm startet nicht

Hallo,

mein Programm startet nicht, wenn ich es aus dem Explorer heraus aufrufe. Man sieht nur kurz eine Sanduhr und dann passiert nichts mehr (sowohl im Debug als auch im Release Ordner).
Heute vormittag ging es noch problemlos. Momentan kann ich es nur noch über die Visual Studio Opberfläche aufrufen. Dann geht die Form problemlos auf und das Programm funktioniert tadellos.

Seid heute morgen habe ich ein ZedGraph Control hinzugefügt und die ContextSwitchDeadlock Ausnahme ausgeschaltet.

Ideen oder Vorschläge?

Gruß

Moin

haste schonmal in den Taskmanager geschaut ob dein Programm läuft oder sich wiklich sofort beendet oder erst gar nicht gestartet wird?

Bau doch mal beim Programm start ne Messagebox ein oder lass dein Programm absichtlich auf einen Fehler laufen damit du ohne VS mal in den DEbugger schauen kannst

oder oder oder

mfg

Also der Prozess läuft im Task Manager. Hab das mit der Messagebox ausprobiert. Diese wird angezeigt. Mein Hauptprogramm sieht wie folgt aus:



static void Main()
        {
            Init();
            
            MessageBox.Show(" Dies ist ein test");

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());

             
            
        }

Die Messagebox kommt noch. Die Form wird dann aber nicht mehr angezeigt. Starte ich aus VS wird die Form anstandslos angezeigt.

Kann das was mit dem ZedGraph zu tun haben? Wär jetzt schon ein bisl aufwendig, den zum Testen wieder rauszunehmen. Außerdem will ich den natürlich auch behalten.

Gruß

dann mach mal die Messagebox in Form1

halt langsam an das problem herrantasten
mfg

Ok hab jetzt eine zweite Message Box in die Prozedur FormLoad eingebaut. Starte ich von VS bekomme ich beide Message Boxen und danach geht dir Form auf.

Starte ich aus dem Explorer kommt nur eine Message Box. Die zweite erscheint nicht mehr und die Form geht auch net auf. Ein Prozess mit dem namen ist aber im Task Manager zu sehen.

Was kann ich jetzt noch machen, um den Fehler zu beheben?

Gruß

Starte dein Programm außerhalb vom VS und im VS kannst du den Debugger dann an den laufenden Process ranhängen. Dann unterbrichst du den einfach und siehst im Optimalfall wo er grad hängt.

Baka wa shinanakya naoranai.

Mein XING Profil.

Hört sich nach einer guten Idee an, aber es funktioniert nicht. Der Prozess hat den Namen: Programmname.vshost.exe und wenn ich den befehl "an Prozess anhängen" auswähle, dann kann ich diesen nicht "auswählen". Er steht zwar in der Liste, allerdings in grauer Schrift und der Typ ist "verwaltet". Alle anderen Prozesse haben hingegen den Typ x86.

Vermute mal stark, dass das was mit meinem Problem zu tun hat... nur was?

Gruß

Dieser vshost Prozess ist was VS spezifisches. Du müsstest auch deine normale Exe im Debug Verzeichnis drin haben und ausführen können - mit der musst du auch dann arbeiten.

Baka wa shinanakya naoranai.

Mein XING Profil.

Ja du hast recht. Wenn ich mir die Sache anschaue bevor ich die erste Message Box anklicke gibt es tatsächlich noch einen weiteren Prozess. Dieser verschwindet aber sobald ich die Box wegklicke.

Habe nun an der Stelle, wo die Box angezeigt wird den Debugger gestartet und tatsächlich tritt in der Zeile:


public Form1()
        {
            InitializeComponent(); <--- Fehlermeldung
        }

ein Fehler auf. Dieser wird mir allerdings außerhalb des Debug Modus nicht angezeigt. Die Fehlermeldung läßt stark vermuten, dass es was mit der ZedGraph dll zu tun hat:
System.IO.FileNotFoundException wurde nicht behandelt.
Message="Die Datei oder Assembly ZedGraph, Version=5.0.1.41097, Culture=neutral, PublicKeyToken=02a83cbd123fcd60 oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden."
Source="CrisCon_Light"
FileName="ZedGraph, Version=5.0.1.41097, Culture=neutral, PublicKeyToken=02a83cbd123fcd60"
FusionLog="=== Zustandsinformationen vor Bindung =\r\nLOG: Benutzer = IKB\s210991\r\nLOG: DisplayName = ZedGraph, Version=5.0.1.41097, Culture=neutral, PublicKeyToken=02a83cbd123fcd60\n (Fully-specified)\r\nLOG: Appbase = file:///X:/Visual C#/Projects/CrisCon_Light/CrisCon_Light/obj/Debug/\r\nLOG: Ursprünglicher PrivatePath = NULL\r\nAufruf von Assembly : CrisCon_Light, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.\r\n=\r\nLOG: Diese Bindung startet im default-Load-Kontext.\r\nLOG: Es wurde keine Anwendungskonfigurationsdatei gefunden.\r\nLOG: Die Computerkonfigurationsdatei von C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\config\machine.config wird verwendet.\r\nLOG: Verweis nach der Richtlinie: ZedGraph, Version=5.0.1.41097, Culture=neutral, PublicKeyToken=02a83cbd123fcd60\r\nLOG: Download von neuem URL file:///X:/Visual C#/Projects/CrisCon_Light/CrisCon_Light/obj/Debug/ZedGraph.DLL.\r\nLOG: Download von neuem URL file:///X:/Visual C#/Projects/CrisCon_Light/CrisCon_Light/obj/Debug/ZedGraph/ZedGraph.DLL.\r\nLOG: Download von neuem URL file:///X:/Visual C#/Projects/CrisCon_Light/CrisCon_Light/obj/Debug/ZedGraph.EXE.\r\nLOG: Download von neuem URL file:///X:/Visual C#/Projects/CrisCon_Light/CrisCon_Light/obj/Debug/ZedGraph/ZedGraph.EXE.\r\n"
StackTrace:
bei CrisCon_Light.Form1.InitializeComponent()
bei CrisCon_Light.Form1..ctor() in X:\Visual C#\Projects\CrisCon_Light\CrisCon_Light\Form1.cs:Zeile 17.
bei CrisCon_Light.Program.Main() in X:\Visual C#\Projects\CrisCon_Light\CrisCon_Light\Program.cs:Zeile 34.

Anfangen kann ich damit nicht viel. Aber ich vermute, dass die Problemlösung nun nicht mehr weit ist.
Wie gesagt aus VS heraus funkzt problemlos.

Gruß

Steht doch da was ihm nicht passt 😉 Er findet die ZedGraph Dll nicht.
Ich nehme an die hast du ins Verzeichnis kopiert wo die Sourcen sind und dann per Verweis eingebunden? VS nimmt als Arbeitsverzeichnis den Sourcen Ordner, wenn du dein Programm ohne VS startest ist es aber der Debug/bin Ordner. Denke so düfte es ungefähr sein bei dir oder? Am einfachsten machst du es dir wohl wenn du beim Verweis auf die ZedGraph Datei die Lokale kopie auf true setzt, dann kopiert er sie nämlich ins Programmverzeichnis beim Build und dann dürfte es keine Schwierigkeiten geben.

Baka wa shinanakya naoranai.

Mein XING Profil.

Klingt alles sehr gut. Nur steht die lokale Kopie schon auf True. Hab sie jetzt mal auf false und wieder zurück auf true gesetzt ohne Veränderung. Keine Ahnung warum das nicht geht.

Hab im Anschluss die DLL einfach ins Startverzeichnis kopiert und jetzt funkzt!-)

Vielen Dank!

Wenn du lokale Kopie auf true hast, müsste sie doch schon längst im Startverzeichnis sein?!?

Baka wa shinanakya naoranai.

Mein XING Profil.

Hab jetzt nochmal genauer gekuckt.
Du hast recht! Ich hab da einen Fehler gemacht und immer aus dem Verzeichnis obj gestartet. Dort war sie nicht drinn.

Was ist denn der Unterschied zwischen Obj und Bin?

Gruß

Eigentlich sind im obj Verzeichnis Zwischendateien vom Kompiliervorgang. Nur gibts in .Net keine Object Dateien mehr und es wird direkt zur exe kompiliert und nun findet die sich noch als Zwischenresultat im obj Verzeichnis. In Sprachen wir C++ würde man da noch MapFiles für den Linker und richtige Object Files finden.
Aber z.b. bei .Net 3.0 und der WPF findest du im obj Verzeichnis noch den ganzen Code der vom XAML Compiler generiert wird(der generiert aus den XAML Files auch nur C# Files) bevor alles endgültig kompiliert wird zur ausführbaren Datei.

Aber normal brauch man sich um dieses Verzeichnis nicht kümmern, nur das bin interessiert.

Baka wa shinanakya naoranai.

Mein XING Profil.