So, erstmal hallo... bin neu hier, aber ich programmier schon ne ganze Weile. Ich hab ein kleines Problem, aber kann vielleicht hier und da auch mal helfen... mal kucken
So, zu meiner Frage: ich würde gerne einige meiner Programme skript-fähig machen, d.h. dass man bei bestimmten Sachen "Makros" hinterlegen kann. Ich hab mir ein paar Techniken angesehen, aber funktionieren tut keine so richtig Vielleicht kann mir von euch jemand die Erleuchtung geben...
CodeDomProvider:
Das wäre die aktuelle Technik. Beliebiger Code wird zur Laufzeit kompiliert (als Datei oder direkt in den Speicher) und kann auch direkt ausgeführt werden. Nachteile: angeblich ist es relativ langsam, .NET lässt die kompilierten Assemblies im Speicher und räumt hinterher nicht sauber auf und - was das schlimmste ist - ich habe quasi ein neues Programm erzeugt, das im Speicher liegt - dieses Programm kann also auch nicht auf meine bestehenden Klassen aus dem "Erzeuger-Programm" zugreifen Zumindest ist hierüber nichts zu finden...
VSA:
Das wäre die Technik, die mit dem .NET-Framework 1.0 eingeführt wurde, aber ist leider äußerst umständlich und kompliziert. Noch dazu ist das Interface "IVsaSite" schon länger mit Visual Studio 2005 bzw. dem .NET-Framework 2.0 als "deprecated" gekennzeichnet und es steht explizit mit dran, dass es keinen Nachfolger geben wird - ich vermute aber mal dass der CodeDomProvider doch mehr oder weniger als Nachfolger bezeichnet werden kann... aber ich mag keine Sachen die "deprecated" sind...
MSScripting:
Ein ewig altes Verfahren, dass noch aus den alten Zeiten ohne .NET stammt und das ist leider auch der Haken daran. Es funktioniert super-einfach, ist noch dazu sau-schnell und mit der addObject-Methode kann man auch ganz easy Objekte aus dem eigenen Code dem Script bereitstellen - nur eben nichts, was auch nur im entferntesten mit .NET zu tun hat: nicht einmal eigene, selbstprogrammierte Klassen funktionieren und es kommt immer zu einer System.InvalidCastException (selbst bei einem explicit cast) - einzige Lösung, die ich finden konnte wäre für jedes einzelne Objekt in meinem Code eine COM-Wrapper-Klasse zu bauen (muss aber leider sagen, dass das meinen Horizont übersteigt)
So, sorry, dass es leider so viel Text wurde... vielleicht kann mir ja jemand nen guten Rat geben... ich möchte einfach nur eine Makro-Fähigkeit für meine Programme - früher ging's total simpel, heutzutage nicht mehr?! Ich bin am Verzweifeln... wie kann ich das am Besten realisieren?
So, zu meiner Frage: ich würde gerne einige meiner Programme skript-fähig machen, d.h. dass man bei bestimmten Sachen "Makros" hinterlegen kann. Ich hab mir ein paar Techniken angesehen, aber funktionieren tut keine so richtig Vielleicht kann mir von euch jemand die Erleuchtung geben...
CodeDomProvider:
Das wäre die aktuelle Technik. Beliebiger Code wird zur Laufzeit kompiliert (als Datei oder direkt in den Speicher) und kann auch direkt ausgeführt werden. Nachteile: angeblich ist es relativ langsam, .NET lässt die kompilierten Assemblies im Speicher und räumt hinterher nicht sauber auf und - was das schlimmste ist - ich habe quasi ein neues Programm erzeugt, das im Speicher liegt - dieses Programm kann also auch nicht auf meine bestehenden Klassen aus dem "Erzeuger-Programm" zugreifen Zumindest ist hierüber nichts zu finden...
VSA:
Das wäre die Technik, die mit dem .NET-Framework 1.0 eingeführt wurde, aber ist leider äußerst umständlich und kompliziert. Noch dazu ist das Interface "IVsaSite" schon länger mit Visual Studio 2005 bzw. dem .NET-Framework 2.0 als "deprecated" gekennzeichnet und es steht explizit mit dran, dass es keinen Nachfolger geben wird - ich vermute aber mal dass der CodeDomProvider doch mehr oder weniger als Nachfolger bezeichnet werden kann... aber ich mag keine Sachen die "deprecated" sind...
MSScripting:
Ein ewig altes Verfahren, dass noch aus den alten Zeiten ohne .NET stammt und das ist leider auch der Haken daran. Es funktioniert super-einfach, ist noch dazu sau-schnell und mit der addObject-Methode kann man auch ganz easy Objekte aus dem eigenen Code dem Script bereitstellen - nur eben nichts, was auch nur im entferntesten mit .NET zu tun hat: nicht einmal eigene, selbstprogrammierte Klassen funktionieren und es kommt immer zu einer System.InvalidCastException (selbst bei einem explicit cast) - einzige Lösung, die ich finden konnte wäre für jedes einzelne Objekt in meinem Code eine COM-Wrapper-Klasse zu bauen (muss aber leider sagen, dass das meinen Horizont übersteigt)
So, sorry, dass es leider so viel Text wurde... vielleicht kann mir ja jemand nen guten Rat geben... ich möchte einfach nur eine Makro-Fähigkeit für meine Programme - früher ging's total simpel, heutzutage nicht mehr?! Ich bin am Verzweifeln... wie kann ich das am Besten realisieren?
Comment