First, make a project with Form1 and add:
1 TextBox
1 Button
Code for Form1:
'Title: Self documentated CodeDom Builder || Author: ByteBlast || ►► ★ Coders | Offical .NET Help Desk ★◄◄
Imports System.Text
Imports System.CodeDom.Compiler
Public Class MainForm
'''
''' Compilation [compiling] is the process of 'converting' a high level language such as VB.NET into 0's and 1's (low level language).
''' This method uses a series of classes and their methods available in the CodeDom.Compiler Namespace.
'''
''' Path to write the executable. ''' Syntax / Source code is just a string of text. You need to specify the code you wish to compile. '''
Private Sub Compile(ByVal ExecutableName As String, ByVal SourceCode As String)
'The CreateProvider method returns a CodeDomProvider instance for the specificed language name.
'This instance is later used when we have finished specifying the parmameter values.
Dim Compiler As CodeDomProvider = CodeDomProvider.CreateProvider("VisualBasic")
'Optionally, this could be called Parameters.
'Think of parameters as settings or specific values passed to a method (later passsed to CompileAssemblyFromSource method).
Dim Settings As New CompilerParameters
'The CompileAssemblyFromSource method returns a CompilerResult that will be stored in this variable.
Dim Result As CompilerResults = Nothing
'- Experiment with more properties in the CompileParameter class by typing "Settings." and exploring IntelliSense.
'Generates an executable instead of a class library.
Settings.GenerateExecutable = True
'Set the assembly file name / path
Settings.OutputAssembly = ExecutableName
'Set assemblies referenced by the source code.
Settings.ReferencedAssemblies.Add("System.dll")
'/target:library, /target:win, /target:winexe
Settings.CompilerOptions = " /target:winexe"
'Determine if you want to treat all warnings as errors (ever noticed the green underscore in the Visual Studio? That indicates a warning).
Settings.TreatWarningsAsErrors = False
'Read the documentation for the result again variable.
'Calls the CompileAssemblyFromSource that will compile the specified source code using the parameters specified in the settings variable.
Result = Compiler.CompileAssemblyFromSource(Settings, SourceCode)
'Determines if we have any errors when compiling if so loops through all of the CompileErrors in the Reults variable and displays their ErrorText property.
If (Result.Errors.Count <> 0) Then
MessageBox.Show("Exception Occured!", "Whops!", MessageBoxButtons.OK, MessageBoxIcon.Information)
For Each E As CompilerError In Result.Errors
MessageBox.Show(E.ErrorText)
Next
End If
End Sub
Private Sub BuildButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'Source code is located in Resources.
'Obtain the source and replace WEBSITE_URL with the specified URL by the user. [Process.Start("[WEBSITE_URL]")].
Dim Source As String = My.Resources.Source.Replace("[WEBSITE_URL]", TextBox1.Text)
'Displays a SaveFileDialogue, determines if the user clicked ok [error trap] and calls the user defined compile method.
Dim S As New SaveFileDialog
With S
.Filter = "Executable (*.exe)|*.exe"
If (.ShowDialog() = DialogResult.OK) Then
Compile(.FileName, Source)
End If
End With
End Sub
Private Function ConvertBytesToString(ByVal bytes As Byte()) As String
Return ASCIIEncoding.ASCII.GetString(bytes)
End Function
Private Function ConvertStringToBytes(ByVal str As String) As Byte()
Return ASCIIEncoding.ASCII.GetBytes(str)
End Function
End Class
Then add to resources "Source.txt", that contains:
Imports System.Diagnostics
Module Module1
Sub Main()
Process.Start("[WEBSITE_URL]")
End Sub
End Module