Guten Morgen zusammen, ich hätte da mal ein Problem… System: Windows 7 (64bit )mit Visual Studio 2012 Ultimate Situation: Derzeit habe ich ein Projekt in Visual Studio 2012 mein einer „Hauptform“. In zwei *.dll Dateien, die ich über „Verzweise“ eingebunden habe, liegen noch andere Forms, die ich über Buttons aus meiner Hauptform heraus starten kann (mit …show() und this.Hide()). Aus einer dieser „Sub-Forms“ möchte ich jetzt ein völlig anderes Projekt kompilieren. Im Netz habe ich die Klasse CodeDom gefunden, mit der ich Strings kompilieren kann. Das klappt soweit, ich kann aus einer *.cs mit dem StreamReader in einen String einlesen und diesen kompilieren. Wie aber funktioniert das mit einem gesamten Projekt, in dem noch viele weiter Klassen existieren? Der Plan ist, dass ich über meine unterschiedlichen Forms, Methoden des „externen“ Projektes mit parametern aufrufen kann und dieses dann zur Laufzeit durch Klick auf einen Button kompiliere und eine exe ausgeführt wird. Kann mir dabei jemand helfen? Hoffe, dass ist einigermaßen verständlich, sonst bitte einfach fragen. Hier noch ein Versuch es darzustellen… Ablauf: Hauptform --> Klick auf Button „Subform1“ --> Subform 1 Hauptform --> Klick auf Button „Subform 2“--> Subform 2 --> Im Textfeld dieser Form Code erzeugen --> Mit dem erzeugten Code Methoden des externen Projektes aufrufen--> externes Projekt kompilieren und ausführen. Vergleiche Anhang... P.S.: Programmieranfänger!!! Beste Grüße
Christoph B. schrieb: > Im Netz habe ich die Klasse CodeDom gefunden, mit der ich Strings > kompilieren kann. Das klappt soweit, ich kann aus einer *.cs mit dem > StreamReader in einen String einlesen und diesen kompilieren. Du hast also in diesem Projekt ein vollständiges Programm, inklusive Testprogramm. > Wie aber > funktioniert das mit einem gesamten Projekt, in dem noch viele weiter > Klassen existieren? Du zerlegst dieses vollständige Projekt in den Teil, den du haben willst und (in deinem Fall) das Testprogramm. Der Teil, den du haben willst, der kommt seinerseits wieder in eine Library (DLL, Assembly). D.h. dein ursprüngliches Projekt mit der CodeDom Klasse und dem zugehörigen Testprogramm zerfällt in das eigentliche Programm und eine Library(DLL, Assembly). Und diese Lib kannst du dann natürlich auch in deinem wirklichen Projekt benutzen. Aber ehrlich: Wegen einer einzigen Klasse lohnt das nicht. Leg den Source Code in ein Verzeichnis, in der du deine allgemein benutzbaren Klassen lagerst (deine persönliche Source Code Bibliothek) und füge das cs File einfach zum Projekt hinzu, in dem du sie benutzen willst.
Hallo Karl Heinz und vielen Dank für Deine Antwort. Das Ding ist, dass es nicht nur um eine Klasse geht. Das externe Projekt beinhaltet 23 Klassen und acht Forms. Diese Projekt muss komplett kompiliert werden... Geht das dann trotzdem?
Christoph B. schrieb: > Das externe Projekt Es gibt kein "Projekt" erst die IDE macht aus einer Sammlung von Dateien etwas was einem im Zusammenhang präsentiert wird, da gibt es prinzipiell zwei Möglichkeiten: - Konvention (z.B. alles was in Ordner X liegt und mit .cs endet) - Konfiguration (D.h. irgendwo liegt eine Datei wo das konfiguriert wird) In der Praxis auch oft eine Kombination aus beidem. Das musst du dir halt raussuchen (Doku zur IDE oder durch Beobachtung) und dann passend auswerten und nachbilden.
Läubi .. schrieb: > Das musst du dir halt raussuchen (Doku zur IDE oder durch Beobachtung) > und dann passend auswerten und nachbilden. Genau. Ich mach sowas meistens pragmatisch, wenn ich mir was downloade, von dem ich nur Teile brauche. Neues Verzeichnis anlegen bzw. in der IDE ein neues Projekt anlegen. Dann kopier ich einfach die erste Klasse, von der ich weiß, das ich sie brauche, in dieses neue Verzeichnis, mach noch ein Testprogramm, welches die Klasse benutzt und compiliere. Der Compiler/Linker sagen mir dann schon, was noch alles fehlt. Und das wird dann vom Original ebenfalls auf dieses Verzeichnis kopiert. So geht das sukzessive weiter, bis ich auf diesem Verzeichnis alles beisammen habe, was zur Benutzung dieser Klasse notwendig ist. Und dann kommts eben drauf an. Will ich eine Lib, dann lösche ich das Projekt wieder und mach ein neues, welches dann eben eine Lib erzeugt. Die Files, die da rein müssen hab ich ja jetzt identifiziert und isoliert. Wie - das ist Arbeit? Ja, klar ist das Arbeit!
Zunächst meinen herzlichen Dank! Bastel noch ein wenig daran rum, noch ist mir nicht alles klar, aber ich melde mich wieder ;) Beste Grüße
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.