Entwickler-Ecke
Sonstiges (.NET) - Neu geschriebenes Programm lässt sich nicht starten: CLR20r3
MMali - Fr 19.06.15 11:02
Titel: Neu geschriebenes Programm lässt sich nicht starten: CLR20r3
Hallo Leute.
Ich hab mit meinem in "Microsoft Visual Studio Express 2013 für Windows Desktop" geschriebenen Programm (in C#) ein Problem.
Gleich im Vorhinein: Ich bin noch Anfänger im Programmieren, also nehmt Rücksicht falls ich nicht gleich alles verstehe.
Auf dem Rechner auf dem ich das Programm (Windows Application) geschrieben habe funktioniert alles einwandfrei.
Falls benötigt die PC-Daten:
Windows 7 Enterprise, Service Pack 1
Prozessor: Intel(R) Core(TM) i5-4310U CPU @ 2.00GHz 2.60GHz
Systemtyp: 64 Bit-Betriebssystem
Mein Problem liegt darin das ich das Programm auf anderen Industrie-PC benötige.
IPC-Daten:
Windows Embedded Standard Service Pack 1
Prozessor: Clereon(R) Dual-Core CPU T3100 @1.90GHz 1.90GHz
Systemtyp: 32 Bit-Betriebssystem
Beim start des Programms (.exe) auf dem Industrie-PC kommt diese Fehlermeldung:
Problem Event Name: CLR20r3
Problem Signature 01: createbackup.exe
Problem Signature 02: 1.0.0.0
Problem Signature 03: 55793d3d
Problem Signature 04: mscorlib
Problem Signature 05: 4.0.30319.17929
Problem Signature 06: 4ffa561c
Problem Signature 07: 43c4
Problem Signature 08: 105
Problem Signature 09: System.IO.DirectoryNotFound
OS Version: 6.1.7601.2.1.0.320.65
Locale ID: 1033
Additional Information 1: 0a9e
Additional Information 2: 0a9e372d3b4ad19135b953a78882e789
Additional Information 3: 0a9e
Additional Information 4: 0a9e372d3b4ad19135b953a78882e789
Read our privacy statement online:
http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0409
If the online privacy statement is not available, please read our privacy statement offline:
C:\Windows\system32\en-US\erofflps.txt
Das Programm hat das Zielframework: .NET Framework 4
Am IPC ist Standardmäßig .NET Framework 3 und 3.5 jedoch hab ich natürlich die 4er Version und auch schon mal höher (Verschiedene PCs) schon vorher installiert.
Ich hab auch schon zum Testen alle Pfade im Programm Kommentiert (dachte wegen System.IO.DirectoryNotFound) hat aber nichts geholfen.
Hab auch schon alles mögliche Gegoogelt, half alles nichts.
Ich kann mir selber komm nicht mehr weiter, hoffe ihr könnt mir dabei helfen.
Moderiert von
Th69: Topic aus C# - Die Sprache verschoben am Fr 19.06.2015 um 11:45
Th69 - Fr 19.06.15 11:51
Hallo und :welcome:
sind die beiden Rechner miteinander verbunden? Dann könntest du per Remote-Debugging mal den externen Prozeß starten und überwachen (evtl. benötigst du dann aber die MS VS Community Edition, da die Express das nicht unterstützt).
Ansonsten benutze einen Logger (z.B. NLog) und protokolliere alle Pfade und -zugriffe.
Ich denke, daß es wegen der unterschiedlichen Windows-Versionen zu der DirectoryNotFoundException kommt, d.h. evtl. bestimmte Systempfade anders heißen (falls dein Programm oder eine verwendete Lib auf diese zugreift).
MMali - Mo 22.06.15 08:03
Hallo und danke für die Antwort.
Habe übers Wochenende keine Zeit gehabt mir das Problem weiter anzuschauen.
Nein die Rechner sind nicht miteinander verbunden, kann aber beide ins selbe Netzwerk hängen.
Ich Probier NLog mal aus und schau was er mir da ausgibt.
Also mein Programm greift schon auf Pfade zu, diese hab ich aber auf die des IPC abgestimmt.
Kann es sein das bei nur einem falsch geschriebenen Pfad die DirectoryNotFoundException kommt?
MMali - Mo 22.06.15 13:03
Also ich bin schon mal weiter, das Programm lässt sich starten.
Der Fehler bisher war in der Lib (using System. ...) wo ich nach ein wenig Probieren wohl Vergessen habe einen nicht mehr verwendeten "Namespace"? zu entfernen.
Das hat dem IPC wohl nicht gefallen.
Also danke schon mal dafür.
Hast du vielleicht auch für diesen Fehler einen Ansatz an was es liegen könnte:
Cannot start process because a file name has not been provided.
Danke schon mal im Voraus.
Th69 - Mo 22.06.15 13:15
Hast du evtl. ein bißchen mehr Info dazu?
Du startest wahrscheinlich einen Process mittels Start? Hast du dabei auch den vollen Pfadnamen angegeben? Oder paßt das WorkingDirectory nicht?
MMali - Di 23.06.15 09:11
Das Problem hat sich erledigt war nur eine Falsche Pfadangabe(Verschrieben).
Trotzdem Danke.
Ich würde sagen meine Frage wurde hiermit beantwortet.
Bin von der schnellen Hilfe Begeistert und werd bestimmt noch öfters in den Foren stöbern.
lg MMali
Th69 - Di 23.06.15 10:24
Ich hoffe mal, daß du keine (System-)Pfade als feste String-Literale in deinem Programm hast, sondern dafür Application.StartupPath oder Environment.GetFolderPath(...) benutzt.
MMali - Di 23.06.15 11:58
Ahm, doch ich denke schon. Hier ein BSP für einen Prozess-start in meinem Programm:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36:
| try { Process p1 = new Process { StartInfo = new ProcessStartInfo { FileName = @"C:\createBackup\acronistools\startbackup.bat" } }; p1.Start(); AutoClosingMessageBox.Show(" The Backup-Process is started!" + Environment.NewLine + " This may take some time!", "© ... GmbH", 5000); p1.WaitForExit();
while (File.Exists(labelWhere.Text + @"\Backup\backuperfolgreich.txt") == (false)) { System.Threading.Thread.Sleep(100); } loadingWindow.Close(); File.Delete(labelWhere.Text + @"\Backup\backuperfolgreich.txt"); using (StreamWriter sw = File.AppendText(@"C:\createBackup\acronistools\EventLog.txt")) { sw.WriteLine("The Backup-Process is finished! " + DateTime.Now.ToShortTimeString()); } using (StreamReader sr = File.OpenText(@"C:\createBackup\acronistools\EventLog.txt")) { string EventLog = ""; EventLog = sr.ReadToEnd(); labelLog.Text = EventLog; } AutoClosingMessageBox.Show(" The Backup-Process is finished!" + Environment.NewLine + " The file is located at " + labelWhere.Text + "!", "© ... GmbH", 5000); } catch (Exception ex) { MessageBox.Show("Attention: " + ex.Message, "© ... GmbH"); Close(); } |
Manche System Pfade werden erst durch ein Label.Text vervollständigt da sie Variabel sind je nach Eingabe des Users.
Was würdest du sonst empfehlen?
Moderiert von
Th69: C#-Tags hinzugefügt
Th69 - Di 23.06.15 12:44
Anstatt der festen Pfad-Literale (evtl. gibt es z.B. gar kein "C:"-Laufwerk - auf meinem Dual-Boot-Rechner ist bei einem Windows "D:" mein Systemlaufwerk und "C:" gibt es dort gar nicht ;- ) solltest du z.B. eine Konfigurationsdatei o.ä benutzen, damit der Anwender die Pfade anpassen kann.
Und zum Zusammensetzen von Pfaden solltest du
Path.Combine() [
https://msdn.microsoft.com/de-de/library/system.io.path.combine%28v=vs.110%29.aspx] benutzen:
C#-Quelltext
1: 2: 3:
| string path = Settings.BackupPath; string fullFilename = Path.Comine(path, "startbackup.bat"); |
Für die Konfigurationsdatei (config.xml) lies dir mal
[Tutorial] Konfigurationsmodell im .NET Framework [
http://www.mycsharp.de/wbb2/thread.php?threadid=6439] durch.
PS: Und auch die anderen Texte (wie den Namen deiner Firma) solltest du über einen Eintrag auslesen, der nur an einer Stelle steht (und dann auch nur dort geändert werden braucht), z.B. mittels
AssemblyCompany (in Properties/AssemblyInfo.cs).
MMali - Di 23.06.15 15:31
Das sollte für mich eigentlich kein Problem sein da alle IPCs auf die das Programm kommt gleich sind/das selbe Image draufgespielt wird.
Und falls ich mal andere bekommen sollte kann ich die Pfade an meinem PC ändern, das Projekt wird ja abgespeichert.
Oder denkst du das das in dem Fall Notwendig ist?
Der Path.Combine() Befehl hat mir weitergeholfen, danke.
Ist bei .xml Dateien ein XML writer zwingend notwendig? Umschreiben lässt sichs ja auch mit File.WriteAllLines bzw. mit dem StreamWriter.
Th69 - Di 23.06.15 15:56
Die Frage nach der XML-Datei schweift jetzt ein bißchen ab - mach dafür bitte dann ein eigenes Thema auf.
Aber eigentlich benötigst du, wenn du meinen Link zum Konfigurationsmodell gelesen hast, keinen eigenen XmlWriter oder XmlReader...
MMali - Di 23.06.15 16:38
Okay, danke nochmal.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!