none
Herausfinden, ob Assembly installiert ist (SQL CE / ReportViewer) RRS feed

  • Frage

  • Hallo zusammen,

      in einem Projekt verwende ich SQL CE und den ReportViewer.

      Da beides separat installiert werden muss würde ich gerne abfragen, ob die entsprechenden Assemblies auf dem Zielsystem verfügbar sind (und wenn nicht eine entsprechende Meldung anzeigen).

      So hab' ich's versucht:

    try
    {
      System.Data.SqlServerCe.SqlCeConnection SqlCeTest = new System.Data.SqlServerCe.SqlCeConnection();
    }
    catch (Exception)
    {
      MessageBox.Show("SQL CE ist nicht installiert.", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
    try
    {
      Microsoft.Reporting.WinForms.ReportViewer ReportViewerTest = new Microsoft.Reporting.WinForms.ReportViewer();
    }
    catch (Exception)
    {
      MessageBox.Show("ReportViewer ist nicht installiert.", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
    

      Aber es erscheint direkt eine "unbehandelte Ausnahme":

    ************** Ausnahmetext **************
    System.IO.FileNotFoundException: Die Datei oder Assembly "System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden.
    Dateiname: "System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"
       bei Test.Main.btButton_Click(Object sender, EventArgs e)


    Warum? Trotz "try ... catch"? Wie kann ich den Fehler abfangen?

    Gruß,

    Matthias

    Mittwoch, 8. August 2012 12:57

Antworten

  • Hallo Matthias,

    Versuch's doch mal über Reflection:

    System.Reflection.Assembly.Load("System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91")

    Hier kannst Du die FileNotFoundException fangen und entspr. behandeln.

    Gruß
    Marcel

    Mittwoch, 8. August 2012 13:42
    Moderator
  • Hi,

    wenn die entsprechende Assembly nicht installiert ist, wird die Exception gleich beim Laden (Pre-Compiling) deines Projekts geworfen, und nicht erst, wenn du im Code auf Funktionen, Klassen etc. zugreifst.

    Wenn du das abfangen willst, dann probiere es so, wie Marcel einen Beitrag weiter oben es beschrieben hat.

    Gruß,

    Steve.

    Mittwoch, 8. August 2012 14:48

Alle Antworten

  • Hallo Matthias,

    Versuch's doch mal über Reflection:

    System.Reflection.Assembly.Load("System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91")

    Hier kannst Du die FileNotFoundException fangen und entspr. behandeln.

    Gruß
    Marcel

    Mittwoch, 8. August 2012 13:42
    Moderator
  • Hi,

    wenn die entsprechende Assembly nicht installiert ist, wird die Exception gleich beim Laden (Pre-Compiling) deines Projekts geworfen, und nicht erst, wenn du im Code auf Funktionen, Klassen etc. zugreifst.

    Wenn du das abfangen willst, dann probiere es so, wie Marcel einen Beitrag weiter oben es beschrieben hat.

    Gruß,

    Steve.

    Mittwoch, 8. August 2012 14:48