VB.NET CodeDomCompiler

  • VB.NET
  • .NET 5–6

Es gibt 21 Antworten in diesem Thema. Der letzte Beitrag () ist von Marcus Gräfe.

    VB.NET CodeDomCompiler

    Hallo,
    ich versuche vergeblich einen Quellcode mit Codedom zu kompielen unter NET 6, leider ohne Erfolg:

    VB.NET-Quellcode

    1. If SaveFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
    2. Dim nl As String = Microsoft.VisualBasic.vbCrLf
    3. Dim c34 As String = Microsoft.VisualBasic.Chr(34)
    4. Using VB_CP As CodeDom.Compiler.CodeDomProvider =
    5. New Microsoft.VisualBasic.VBCodeProvider()
    6. 'Angaben für das Compilieren des Win-Forms-Projekts zusammenstellen
    7. Dim ComParams As New CodeDom.Compiler.CompilerParameters()
    8. With ComParams
    9. .GenerateExecutable = True
    10. 'benötigte Projekt-Verweise
    11. .ReferencedAssemblies.Add("System.Windows.Forms.DLL")
    12. .ReferencedAssemblies.Add("System.Drawing.DLL")
    13. 'Erstellte Datei
    14. .OutputAssembly = SaveFileDialog1.FileName
    15. .GenerateInMemory = False
    16. .CompilerOptions = "/target:winexe"
    17. .MainClass = "xxxform"
    18. End With
    19. 'Code-String zum Erstellen eines Projekts, das eine Form öffnet
    20. '(Man könnte den Code auch aus einer VB-Datei laden ... incl. Designer)
    21. Dim code As String = Form2.R_Orginal.Text
    22. 'Code-Zeichenfolge Compilieren und EXE erstellen
    23. Dim ComResults As CodeDom.Compiler.CompilerResults =
    24. VB_CP.CompileAssemblyFromSource(ComParams, code)
    25. 'ggf. Compiler-Fehlermeldungen anzeigen
    26. With ComResults
    27. If .Errors.Count > 0 Then
    28. MsgBox("Exe Datei konnte nicht erstellt werden!", MsgBoxStyle.Critical)
    29. Else
    30. MsgBox("Exe Datei ist erfolgreich erstellt worden!", MsgBoxStyle.Information)
    31. End If
    32. End With
    33. End Using
    34. End If


    Da taucht dann immer einen Fehler auf (siehe Bild).

    Wer kann mir da helfen?

    CodeTags korrigiert ~VaporiZed
    Bilder
    • FEHLER.PNG

      33,36 kB, 735×205, 95 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    www.android-hilfe.de ist offensichtlich die eigentliche Codequelle. Ich erwähne es deshalb, damit sich kein Leser fragt: »Wenn der TE schon soviel Code selber erstellt hat, wieso kommt es dann erst zu so einem späten Entwicklungszeitpunkt zu einem so eklatanten Fehler?«

    Zum Problem: Da das Ganze in einem .NET-Framework 4.8-Projekt zu klappen schein, in einem wie von Dir angegebenen .NET 6-Projekt hingegen nicht, wäre natürlich die Frage, ob eine Projektumstellung infrage kommt.
    Denn mit Minimaleigenrecherche wärst Du auf diese offizielle Mikrosaft-Seite gestoßen, die besagt: »Das ist jetzt einfach so, ob da was geändert wird, steht noch nicht fest.«
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Neues Projekt erstellen und richtigen Projekttyp wählen, siehe Anhang
    Bilder
    • Projekttyp.png

      30,06 kB, 1.012×322, 74 mal angesehen
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @Script1 Sieh Dir mal diesen CodeDom-Formelparser an:
    FormelParser.zip
    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!
    Danke, ich habe es hin bekommen.
    Jetzt habe ich noch eine andere wichtige Frage, ich habe durch langes probieren und langes suchen leider nicht hin bekommen.

    Und zwar:
    In meiner Form kann man 2 verschiedene kleine Programme in einer exe kompilieren anhand des Quellcodes. Man kann beide auswählen oder nur ein Programm.
    Ich habe den fertigen Quellcode für die 2 Programme in einer Richtextbox gespeichert. Wenn man aber jetzt nur ein Programm auswählt, möchte ich gerne
    vor dem kompilieren den Quellcode von dem anderen Programm aus der Richttextbox löschen.

    Mein Code sieht bis jetzt so aus:

    VB.NET-Quellcode

    1. If Ch1.Checked = True Then
    2. Form2.R_Orginal.Text = Form2.R_Orginal.Text.Remove(5, Form2.R_Orginal.Lines(5).Length + 1)
    3. End If
    4. If Ch2.Checked = True Then
    5. Form2.R_Orginal.Text = Form2.R_Orginal.Text.Remove(7, Form2.R_Orginal.Lines(7).Length + 1)
    6. End If


    Bei Ch1 soll er die komplette 5. Zeile löschen und bei Ch2 die komplette 7. Zeile.
    Ich bekomme das einfach nicht hin.

    Kann mir jemand helfen?

    CodeTags gesetzt ~VaporiZed

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    @Script1 Wie oft kommt in Deinem Snippet Form2 vor?
    Du wirst selbst erkennen, dass da was falsch gelaufen ist.
    Also:
    Verinnerliche dies:
    Dialoge: Instanziierung von Forms und Aufruf von Dialogen
    Dann:
    Pack die Lines der RTB in eine List(Of String), entferne das, was zu entfernen ist und weise den RTB.Lines die List(Of String) als Array zu.
    Feddich.
    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!
    Also ich habe nur eine Form2. Ich habe schon öfters Form2 im Quellcode geschrieben.
    Die Liste wird dann ewig lang werden, weil in meiner Richtextbox insgesamt 171 Zeilen sind.
    Wie mache ich dies am besten mit der Liste? Ist der Befehl von der Liste mit den eckigen Klammern []?
    Hast du dafür für mich den passenden Code?

    Ich habe gerade sowas erstellt, ist das richtig?

    VB.NET-Quellcode

    1. 'Liste
    2. Dim lines = Form2.R_Orginal.Lines.ToList()
    3. lines.Add("Imports System.Windows")
    4. lines.Add("Imports System.Windows.Forms")
    5. lines.Add("Imports System.Drawing")
    6. lines.Add("Imports System.EventArgs")
    7. Form2.R_Orginal.Lines = lines.ToArray


    Falls das richtig ist, dauert das ewig lang bis ich alles drin habe und das ist wahnsinnig viel Codes dann

    CodeTags gesetzt ~VaporiZed

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „VaporiZed“ ()

    @Script1 So was, ungetestet:

    VB.NET-Quellcode

    1. Dim list = New List(Of String)
    2. list.AddRange(RTB.Lines)
    3. list.RemoveAt(42)
    4. RTB.Lines = list.ToArray()
    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!
    @Script1 Dies ist ein merkwürdiger Thread:
    • CodeDomCompiler
    • Zeilen einer RichTextBox
    • Metadaten in Bildern und Videos
    Neue Themen ohne die vorherigen "ordentlich" beendet zu haben.
    Könntest Du mal diese Bröckchen sein lassen und uns das ganze Problem / Konzept vorstellen?
    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!
    @RodFromGermany Naja, das Gesamtbild ergibt sich, wenn man einen Blick auf die die anderen Threads wirft, die der TE erstellt hat.

    - Probleme beim Speichern von Screenshots
    - 171 .NET-Bibliotheken nachladen (vermutlich um .NET auf Systemen verfügbar zu machen auf denen keine .NET Installation existiert ohne es sauber installieren zu müssen)
    - Probleme beim Mail-Versand mit Anhängen
    - Alle 15 Sekunden Screenshots erstellen und verschlüsselt ablegen ohne sie vorher als Bilddatei auf die Festplatte zu speichern
    - etc...

    gibt nicht soviele Anwendungsbereiche in denen man all diese Teilbereiche braucht;) Glücklicherweise ist der TE beim aktuellen Kenntnisstand meilenweit davon entfernt eine wirkungsvolle allgemeine Verbreitungsroutine zu schreiben, sodass er seine "Überwachungssoftware" nur auf Systemen installieren kann, auf die manueller Zugriff existiert. Gehen wir also davon aus, dass hier ein eigener Rechner überwacht werden soll.


    Ein Computer wird das tun, was du programmierst - nicht das, was du willst.

    Yanbel schrieb:

    Gehen wir also davon aus, dass hier ein eigener Rechner überwacht werden soll.


    Kann ich irgendwie nicht, denn dann wäre das via Mail doch überflüssig und man könnte andere Sachen machen welche ich jetzt lieber nicht erwähne. Denn er hat stetig Zugriff auf den eigenen Rechner und könnte die Bilder dann auswerten.

    Edit: Mit den FW ohne es zu installieren spricht auch gegen den eigenen Rechner, kenne keinen Grund dagegen das FW zu installieren wenn man selbst dafür entwickelt. Da er auf dem eigenen Rechner selbst für's FW entwickelt, isses ja wohl drauf.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Takafusa“ ()

    @Takafusa Ja, aber wenn man keine Ahnung von diesen "anderen Dingen" hat und das gerne Remote auswerten will, wäre das ein (zugegebenermaßen sehr unwahrscheinlicher) Fall, in welchem man das so lösen könnte. Aber ich gebe dir absolut Recht, das ist schon ein wenig verdächtig und passt genau zu der Reaktion auf @RodFromGermany letzter Nachfrage. Blocken und dicht machen.

    Edit: @Takafusa zu deinem letzten Edit: Ich gehe mal davon aus, dass hier jedem klar ist, was das Ziel des TE ist. Aber es kann auch sein, dass er seinen Rechner auf der Arbeit überwachen will, auf dem er keine Admin-Rechte besitzt. Ist alles möglich, wenn auch unglaubwürdig und höcht unwahrscheinlich. Ich sage nur, dass ich hier niemandem etwas unterstellen will, ohne irgendwelche Beweise. Ich werde an dieser Stelle, wie bei allen Threads dieser Art, keine Hilfestellung mehr bei Projekten des TE geben, bei denen das Ziel unklar ist. Einfach weil es zu viele von diesen "verdächtigen Aspekten" gibt. Aber das ist eine rein persönliche Entscheidung ohne jede Wertung.


    Ein Computer wird das tun, was du programmierst - nicht das, was du willst.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Yanbel“ ()

    Bevor hier weiter spekuliert wird, sollte @Script1 uns mal verraten, was für eine Art von Software er hier gerade entwickelt.

    @Script1 Zudem möchte ich dich bitten, erledigte Threads auf "Erledigt" zu setzen (das kleine Kästchen oben hinter dem Threadtitel doppelklicken). Das ist bisher bei keinem deiner Threads passiert.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Hallo,
    Also ich möchte hier mal klar stellen das ich nichts illegales vorhabe. Ich halte mich an das Gesetz. Es ist erlaubt dies auf meinen eigenen Rechner zu machen. Ich werde sowas nie weiter verbreiten. Warum ich sowas mache? Weil ich Interesse habe sowas mal zu programmieren. Es gibt natürlich auch viele andere harmlose Dinge, die man Programmieren kann. Aber sowas mal zu programmieren, das finde ich irgendwie spannend.
    Man kann sogar solche Programme legal kaufen (das sind sogenannte Keylogger), wo man seinen eigenen Rechner kontrollieren kann. Aber ich werde sowas natürlich nicht kaufen, ich habe nur mal Interesse sowas selbst zu programmieren.
    Aber ich werde dies auf keinen Fall weiter verbreiten.

    Ich habe kein Interesse andere Rechner zu überwachen. An meinen eigenen Rechner darf ich das ja solange kein anderer da dran ist.

    Script1 schrieb:

    An meinen eigenen Rechner darf ich das ja solange kein anderer da dran ist.
    Wenn kein anderer dran ist, ist ja auch nichts zu loggen.
    Wollen wir hoffen, dass es sich mit dem Rest so verhält, wie Du schreibst.
    Und:
    Wenn an meinen Rechner niemand ran soll, sperre ich ihn.
    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!
    Hi!

    Es gilt auch ganz unabhängig davon, ob du mit diesem "spannenden" KnowHow etwas kriminelles vorhast oder nicht.
    Ein Software-Forum kann von der genzen Welt gelesen werden.
    Wenn vbParadise dich mit dem Wissen ausstattet, wie man SoftwarePakete ohne Installation aktiviert, regelmässige Screenshots anfertigt, verschlüsselt abspeichert und automatisch per Mail herumschickt - dann ist das gleichzeitig eine kostenlose Bastel-Anleitung für jeden in der Welt, auch für Leuts, die durchaus bereit und gewillt sind, in Kriminelle Machenschaften einzusteigen.

    Da finde ich, muss vbp Verantwortung übernehmen - bzw genauer: VBP hat da Verantwortung, und muss auch tatsächlich wahrnehmen.