Modularisierung für einen ReportViewer

mschlegel

Erfahrenes Mitglied
Hallo

Ich arbeite mich gerade in die programmatische Erstellung von Berichte (Reportign Service 2005) ein und nutze dafür das ReportViewer-Control.

Jetzt möchte ich aber meine Projekte so modular wie möglich gestallten, d.h. das ReportViewer-Projekt soll wiederverwendbar sein und die Report-Projekte sollen sich in diesen "einhängen" können.
Um das ganze etwas zu verdeutlichen: ein Report-Projekt besteht im Grunde nur aus einem DataSource und den einzelnen Berichten (rdl-Dateien). Das Viewer-Projekt soll die Berichte lediglich verwalten und anzeigen.

Die eigentlich Frage ist jetzt, wie kann ich die Reports in den Viewer einhängen ohne gleich mit absoluten Pfadangaben arbeiten zu müssen? Wichtig ist, dass der Viewer keinerlei Abhängigkeiten besitzen darf (zwecks Wiederverwendung).

Wenn mir jemand eine Richtung deuten könnte in der Art, "ja das ist möglich, dazu musst du Technik X anwenden" wäre ich schon sehr dankbar. Eine konkrete Umsetzung sollte ich dann schon finden (oder ich frag nochmal nach ;) )
 
Ich hab mich mal ein wenig schlau gemacht und die Lösung ist eigentlich realitiv einfach. Relativ daher, da meine Kenntnisse in .NET noch nicht sehr fortgeschritten sind ;)

Ich lade eine Assembly ganz einfach dynamisch nach, d.h. ich habe 3 Projekte:
  1. ReportModul
  2. Connector
  3. Projekt mit den Reports
wobei 1 mit 2 referenziert ist und 3 ebenfalls mit 2.

Mein Problem ist jetzt nur, dass ich noch nicht herausfidnen konnte wie ich alle DLLs in einem bestimmten Ordner laden kann und noch komplizierter, wie kann ich aus diesen DLLs die Report-Dateien extrahieren um sie in mein ViewerControl zu laden?

Vielleicht hat hierzu jemand einen Tipp für mich.
Danke
 
Also, wenn ich dich richtig verstanden habe, hast du eine Assembly, welche den ReportViewer darstellt, und letztlich ein Reihe weiterer Projekte, die ebenfalls diesen ReportViewer verwenden sollen.

Warum bindest du nicht einfach deinen ReportViewer(.dll) in die anderen Projekte ein?
 
Hi

Das tue ich ja, indirekt. Die Reports binden den Connector ein (definiert lediglich ein Interface). Das selbe tut der Viewer.

Wir haben (leider) eine etwas ältere Delphi-Anwendung und dies ist der erste Schritt in Richtung .NET. Eigentlich muss für ein solches Szenario (starke verteilung der Clients) eine Webandwendung her, aber das wurde damals halt nicht berücksichtigt. Wegen dieser starken Client-Verteilung will ich es so eifnach/flexibel wie möglich halten, d.h. die Reports müssen ohne Neukompilierung ausgetauscht werden können.

Und deshalb will ich die Report-DLLs aus einem spezifischen Verzeichnis des Viewers laden

EDIT: Problem gelöst und das ganze ohne irgendwelche Abhängigkeiten. Ich erstelle einfach ein Report´Project als ClassLibrarz in welches ich meine fertig reports und DataSoruces hineinkopiere. nach dem Build werden diese einfach in den Ordner reports/ des Viewers kopiert und dieser lädt mittels Reflection die Resourcen (die reports müssen als emebedded Resource erstellt werden)
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück