VB-Code kompilieren

    • VB.NET

    Es gibt 87 Antworten in diesem Thema. Der letzte Beitrag () ist von teddygun300.

      Mal eine frage, lässt die VBC.exe denn zu .dll Dateien zu Compilieren?
      ich habe es mal aus Spaß versucht Public Sub Main() darf nicht fehlen sonst Compiliert er gar nicht...
      und wenn überhaupt dann nur .exe Files.

      Kann man das auch so für dll´s einrichten?
      Thx LG.L

      //Edit
      Hat sich erledigt, wenn es interessiert das schreibe ich morgen an...

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

      Schaut euch das mal an:

      VB.NET-Quellcode

      1. Imports System.Windows.Forms
      2. Module Module1
      3. Sub Main()
      4. Dim frm As New Form
      5. Dim stage1 As New Button
      6. stage1.Visible=True
      7. frm.Controls.Add(stage1)
      8. frm.ShowDialog()
      9. End Sub
      10. End Module


      Was is'n das für'n alter Button? Denn kenn ich noch aus BlitzPlus...

      Und wie könnte ich nun direkt eine Picturebox anzeigen lassen (ja, ich habs mit New Picturebox versuchbt, nur die Image-Zuweisung klappt nicht) und auf deren Paint-Event zugreifen?
      Um das Konzept von Windows Forms zu verstehen, ist es sicherlich nützlich, sich mal den Designercode eines entworfenen Formulars anzuschauen.

      Und zu dem "alten" Button: Der ist nicht alt, Visual Styles sind einfach nicht aktiviert in deiner Anwendung. Um dies zu ändern:

      VB.NET-Quellcode

      1. Application.EnableVisualStyles()
      Hey, ich habe da ein Problem. Mein Code ist :

      VB.NET-Quellcode

      1. Public Class Form1
      2. Private Sub MenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click
      3. CompileCode(TextBox1.Text, Environment.GetFolderPath(Environment.SpecialFolder.Desktop), TextBox2.Text)
      4. End Sub
      5. Private Function CompileCode(ByVal code As String, ByVal tmpfile As String, ByVal outpath As String) As Boolean
      6. IO.File.WriteAllText(tmpfile, code)
      7. If IO.File.Exists(outpath) Then IO.File.Delete(outpath)
      8. Dim p As New Process With {.StartInfo = New ProcessStartInfo With {.Arguments = " /t:exe """ & tmpfile & """", .WindowStyle = ProcessWindowStyle.Hidden, .FileName = IO.Path.Combine(New IO.FileInfo(Application.ExecutablePath).Directory.Root.FullName, "WINDOWS\Microsoft.NET\Framework\v3.5\vbc.exe")}}
      9. p.Start()
      10. p.WaitForExit()
      11. Return IO.File.Exists(outpath)
      12. End Function
      13. End Class


      Doch dann kommt immer (auch wenn ich als Admin starte) Zugriff auf Desktop wurde verweigert. Und was bedeuted dieses Tmpfile?

      es klappr doch XD

      Enten Mann schrieb:

      Natürlich ist der 3.5 drauf, mit deinem code erstellt er auch nur die test.vb :P



      ich weis nicht ob du es jetzt noch brauchs aber ich stand vor dem selben problem wie du :D

      das problem was ich hatte war einfach das ich nicht 3.5 sondern v4.0.30319 hatte.

      schau einfach mal im ordner "C:\Windows\Microsoft.NET\Framework" was die aktuellste version bei dir ist und füge diese dann im code ein.

      bei mir ist das dann so :


      VB.NET-Quellcode

      1. 'ich benutze für das bsp einfach mal deine base :O
      2. Dim code As String = TextBox_code.Text
      3. 'Überprüfen ob Visual Basic installiert ist
      4. Dim vb_install As New FileInfo(Environ("systemroot") & "\Microsoft.NET\Framework\v4.0.30319\vbc.exe") 'hier den ordner ändern
      5. 'Visual Basic Ordner erstellen
      6. My.Computer.FileSystem.CreateDirectory("C:\Builds")
      7. 'Visual Basic Datei (*.vb) erstellen
      8. My.Computer.FileSystem.WriteAllText("C:\Builds\Build.vb", code, False)
      9. 'Kompilieren
      10. (VB.NET = vbc.exe)
      11. If vb_install.Exists ThenShell(Environ("systemroot") & "\Microsoft.NET\Framework\v4.0.30319\vbc.exe /t:exe C:\Builds\Build.vb", AppWinStyle.Hide) 'und hier den ordner ändern
      12. ElseMessageBox.Show("Sie haben Visual Basic nicht installiert !")
      13. End If




      bei mir klappt das super :D

      wenns immeer noch net klappt dann habe ich keine ahnung was man noch machen kann.

      dann bin ich mit meinem latein äähh vb am ende :D