Benutzer mit den meisten Antworten
Herausfinden, ob Assembly installiert ist (SQL CE / ReportViewer)

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
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
- Als Antwort markiert Matthias Schuppe Mittwoch, 8. August 2012 16:40
-
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.
- Als Antwort markiert Matthias Schuppe Mittwoch, 8. August 2012 16:40
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
- Als Antwort markiert Matthias Schuppe Mittwoch, 8. August 2012 16:40
-
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.
- Als Antwort markiert Matthias Schuppe Mittwoch, 8. August 2012 16:40