2012-04-13 9 views
0

Leider habe ich nicht ganz den awnser gefunden, den ich im Suchabschnitt oder irgendwelchen anderen Kodierungsforen gesucht habe, also werde ich meine Frage hier für einige hopping lassen Schließung.C# Anwendung scheint nicht auf einem ähnlichen Computer zu meinem laufen

Ich habe eine sehr einfache C# -Anwendung entwickelt, eines der Startup-Projekte von Windows - das Labyrinth, das ein einfaches Panel mit Beschriftungen und einfachen Mausereignissen verwendet, um die Position des Zeigers zu starten.

Ich habe erfolgreich meine Anwendung veröffentlicht und es funktioniert reibungslos auf meinem Computer und ein paar andere, aber aus irgendeinem seltsamen Grund wird es einfach nicht auf dem Laptop meines Freundes laden.

Wir beide teilen das gleiche Betriebssystem (Windows 7), wir beide haben die x64-Version und das Framework scheint das gleiche zu sein, aber obwohl der Prozess im Task-Manager angezeigt wird, wird es einfach nicht laden, auch nach der Installation ist erfolgreich.

Also, das Programm läuft, aber es scheint wie es wird nicht geladen und es wirft keine Ausnahmen oder Fehler analysiert werden.

Deshalb ist meine Frage, was sind die Voraussetzungen für meine Programme mit anderen Computern voll kompatibel zu sein?

Ich schätze die Aufmerksamkeit, ich habe eine Menge Zeit damit verbracht, an dieser Sache zu arbeiten und kann nicht den richtigen Grinder finden.

Ich werde auch meine Form Code zur weiteren Analyse an:

using System; 
    using System.Collections.Generic; 
    using System.ComponentModel; 
    using System.Data; 
    using System.Drawing; 
    using System.Linq; 
    using System.Text; 
    using System.Windows.Forms; 

    namespace Labirinto 
    { 
     public partial class frmLabirinto : Form 
     { 
      // Toca um som sempre que o utilizador bater numa parede 
      System.Media.SoundPlayer startSoundPlayer = new System.Media.SoundPlayer(@"C:\Users\Ricardo Borges\Documents\Visual Studio 2010\Projects\Labirinto\Labirinto\Resources\doh.wav"); 
      // Toca um som sempre que o utilizador chegar ao final do labirinto 
      System.Media.SoundPlayer finishSoundPlayer = new System.Media.SoundPlayer(@"C:\Users\Ricardo Borges\Documents\Visual Studio 2010\Projects\Labirinto\Labirinto\Resources\tada.wav"); 


    public frmLabirinto() 
    { 
     InitializeComponent(); 
     MoveToStart(); 
    } 

    private void frmLabirinto_Load(object sender, EventArgs e) 
    { 

    } 

    /// <summary> 
    /// O método permite que o ponteiro do rato volte ao ponto inicial 
    /// </summary> 
    private void MoveToStart() 
    { 
     startSoundPlayer.Play(); //Toca o som de reinicio do jogo 
     Point startingPoint = panel1.Location; //ponto inicial 
     startingPoint.Offset(10, 10); //localizacao do ponto inicial 
     Cursor.Position = PointToScreen(startingPoint); //coloca o cursor no local inicial 
    } 

    private void finishLabel_MouseEnter(object sender, EventArgs e) 
    { 
     finishSoundPlayer.Play(); //Toca o som de fim de jogo 
     // Congratula o utilizador através de uma mensagem no ecrã 
     MessageBox.Show("Parabéns, encontrou a saída do labirinto"); 
     Close(); 
    } 

    private void wall_MouseEnter(object sender, EventArgs e) 
    { 
     MoveToStart(); //recoloca o ponteiro no ponto inicial ao embater numa parede 
    } 


} 

}

+3

Wie können die Werte von startSoundPlayer und finishSoundPlayer fest codiert werden?Stellen Sie sicher, dass die Dateien auf Ihrem Freunde-System vorhanden sind. –

+1

@Parv: +1. Ich habe den Code nicht einmal überprüft! –

+0

Nun, wenn das Programm in eine exe kompiliert wird, ist das unbedingt notwendig? Und wie sollte ich die Referenz dann richtiger hinzufügen? – RBorges77

Antwort

1

Ich habe das Gefühl, dass die hartcodierten Werte, die beim Initialisieren beider SoundPlayer-Objekte verwendet werden, einen Fehler verursachen. Was ist zum Beispiel, wenn auf dem Computer, auf dem die Anwendung ausgeführt wird, kein Benutzer unter dem Namen "Ricardo Borges" vorhanden ist?

System.Media.SoundPlayer startSoundPlayer = new System.Media.SoundPlayer(@"C:\Users\Ricardo Borges\Documents\Visual Studio 2010\Projects\Labirinto\Labirinto\Resources\doh.wav"); 
System.Media.SoundPlayer finishSoundPlayer = new System.Media.SoundPlayer(@"C:\Users\Ricardo Borges\Documents\Visual Studio 2010\Projects\Labirinto\Labirinto\Resources\tada.wav"); 

Based on the MSDN documentation für das Objekt Soundplayer ‚wenn der Pfad oder die URL nicht gültig ist, wird der Soundplayer immer noch auf eine Last konstruiert, aber nachfolgende Aufrufe wird oder Methode spielen wird fehlschlagen‘.

Die erste Zeile in der MoveToStart Funktion hat die folgende Zeile:

startSoundPlayer.Play(); 

zurück zu MSDN für die SoundPlayer.Play Methode Mit Bezug auf die Ursache des Fehlers zu einer von drei verschiedenen Ausnahmen auslösen kann je - der FileNotFoundException scheint ein wahrscheinlicher Täter zu sein.

Können Sie bestätigen, dass sowohl die angegebenen Speicherorte als auch die tatsächlichen Dateien auf dem Computer mit Problemen vorhanden sind?

+0

Nein, aber was mich wirklich verwirrt, ist, dass der gleiche Build für andere Maschinen funktioniert hat, die nicht denselben Pfad haben würden. Aber ich verstehe alle deine Punkte und schätze die Mühe. Wie kann ich diese Referenz tatsächlich ersetzen, so dass sie mit den anderen Dateien fortgesetzt wird, die für das Projekt benötigt werden, wenn es veröffentlicht wird? – RBorges77

+0

@ vuk77 Sie müssen der Anwendung eine Protokollierung (System.Diagnostics) hinzufügen, insbesondere in dem Bereich, in dem Daten geladen und initialisiert werden. Wenn Sie einen Fehler erfassen können, hilft es uns, die Ursache einzugrenzen. –