I am curious: Are you new to the .NET Framework or new to VB.NET only? I know you mentioned you are using VB.NET, though there is a way to compile an application from source in a C# application... Certainly worth mentioning?
You actually make use of the C# Code Compiler to do this, and I have a project running in an enterprise environment that makes use of this... Try the following example. Note though that I do not feel the need to comment what anything does. It is pretty straight forward if you follow the documentation on the CodeDom and CSharp assemblies in MSDN.
I know it's not quite what you were looking for, but I'm sure with a bit of logic in your "game maker" app you can actually generate the appropriate C# source file and run it through this compiler?
Code:
using System.IO;
using System.Reflection;
using System.CodeDom;
using System.CodeDom.Compiler;
using Microsoft.CSharp;
static void CompileSomething()
{
string SourceCode = new StreamReader("c:\\test.cs").ReadToEnd();
CSharpCodeProvider prov = new CSharpCodeProvider();
CompilerParameters compParam = new CompilerParameters();
compParam.ReferencedAssemblies.Add("System.dll");
compParam.ReferencedAssemblies.Add("System.Windows.Forms.dll");
compParam.TreatWarningsAsErrors = false;
compParam.GenerateExecutable = true;
compParam.GenerateInMemory = false;
compParam.OutputAssembly = "C:\\temp\\test.exe";
CompilerResults result = prov.CompileAssemblyFromSource(compParam, SourceCode);
}
The content of the "test.cs" file is basically just copied and pasted from a Windows Forms application, but to be complete, here it is anyway:
Code:
using System;
using System.Windows.Forms;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
}
}
namespace WindowsApplication1
{
partial class Form1
{
private System.ComponentModel.IContainer components = null;
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
components.Dispose();
base.Dispose(disposing);
}
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Text = "Form1";
}
}
}
namespace WindowsApplication1
{
static class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}