a

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    mit dieser lib kannste code ausführen

    oder so:

    VB.NET-Quellcode

    1. <Extension()> _
    2. Public Function Run(code As String) As Object
    3. Dim InputCode As [String] = [String].Empty
    4. 'Unser TestCode, in dem Wir ein MessageBox aufrufen
    5. InputCode = code
    6. Dim Assembly As System.Reflection.Assembly = CompileCode(InputCode)
    7. 'Compilefehler abfangen
    8. If Assembly Is Nothing Then
    9. Return 0
    10. End If
    11. Dim Temp As Object = Assembly.CreateInstance("RunTimeCompiler.Test")
    12. 'Fehler bei Instanzenerzeugung
    13. If Temp Is Nothing Then
    14. Return 0
    15. End If
    16. Dim RefType As Type = Temp.[GetType]()
    17. 'Aufzurufende Methode auswählen, in unserem Fall heißt die Funktion Ergebnis
    18. Dim MethodInfo As System.Reflection.MethodInfo = RefType.GetMethod("Ergebnis")
    19. 'Methode aufrufen, in unserem Fall haben wir in der Funktion Ergebnis keine Parameter. Andernfalls müssten diese als Object-Array angegeben Werden
    20. Return MethodInfo.Invoke(Temp, New Object() {})
    21. End Function
    22. ''' <summary>
    23. '''
    24. ''' </summary>
    25. ''' <param name="InputCode"></param>
    26. ''' <returns></returns>
    27. Public Function CompileCode(InputCode As String) As System.Reflection.Assembly
    28. Dim CodeDomProvider As System.CodeDom.Compiler.CodeDomProvider = System.CodeDom.Compiler.CodeDomProvider.CreateProvider("CSharp")
    29. 'Parameter für die Compilierung, wie die einzubindenen Bibliotheken usw.
    30. Dim CompilerParameters As New System.CodeDom.Compiler.CompilerParameters()
    31. CompilerParameters.ReferencedAssemblies.Add("System.dll")
    32. CompilerParameters.ReferencedAssemblies.Add("System.Windows.Forms.dll")
    33. CompilerParameters.CompilerOptions = "/t:library"
    34. CompilerParameters.GenerateInMemory = True
    35. 'Über den StringBuilder wird der Code zusammengesetzt
    36. Dim Temp As New StringBuilder()
    37. Temp.AppendLine("using System;")
    38. Temp.AppendLine("using System.Windows.Forms;")
    39. Temp.AppendLine("namespace RunTimeCompiler{")
    40. Temp.AppendLine("public class Test{")
    41. Temp.AppendLine("public object Ergebnis(){")
    42. Temp.AppendLine(InputCode)
    43. Temp.AppendLine("}}}")
    44. 'Compilieren
    45. Dim CompilerResults As System.CodeDom.Compiler.CompilerResults = CodeDomProvider.CompileAssemblyFromSource(CompilerParameters, Temp.ToString())
    46. 'Auf CompilerFehler prüfen
    47. If CompilerResults.Errors.Count > 0 Then
    48. Return Nothing
    49. End If
    50. 'Rückgabe der compilierten Assembly
    51. Return CompilerResults.CompiledAssembly
    52. End Function


    müsstest aber anpassen
    Dateien
    • rScripting.dll

      (16,9 kB, 76 mal heruntergeladen, zuletzt: )

    Android schrieb:

    Man gibt zum Beispiel "beispielplugin" in eine TextBox ein,
    Die Namen solltest Du aber lieber mit einem OpenFileDialog oder aus einer entsprechend bestückten ListBox holen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!