在CodeDom生成的代码中不会显示MessageBox
本文关键字:显示 MessageBox 代码 CodeDom | 更新日期: 2023-09-27 18:18:38
我用c#编写了一个编译器,它用CodeDom编译代码。编译后的。exe必须显示一个消息框,但它不这样做。一切工作正常,.exe被编译和生成,但是输出不工作(没有出现MessageBox)。
下面是我的代码:private void button1_Click(object sender, EventArgs e)
{
String InputCode = String.Empty;
//Unser TestCode, in dem Wir ein MessageBox aufrufen
InputCode = "MessageBox.Show((1 + 2 + 3).ToString());"; //Here is the MSGBox
System.CodeDom.Compiler.CodeDomProvider CodeDomProvider = System.CodeDom.Compiler.CodeDomProvider.CreateProvider("CSharp");
//Parameter für die Compilierung, wie die einzubindenen Bibliotheken usw.
System.CodeDom.Compiler.CompilerParameters CompilerParameters = new System.CodeDom.Compiler.CompilerParameters();
CompilerParameters.ReferencedAssemblies.Add("System.dll");
CompilerParameters.OutputAssembly = "Outpu2t.exe";
CompilerParameters.ReferencedAssemblies.Add("System.Windows.Forms.dll");
CompilerParameters.CompilerOptions += "/target:winexe" + " " + "/win32icon:" + "'"" + textBox6.Text + "'"";
CompilerParameters.GenerateExecutable = true;
CompilerParameters.GenerateInMemory = false;
//Über den StringBuilder wird der Code zusammengesetzt
StringBuilder Temp = new StringBuilder();
Temp.AppendLine(@"using System;");
Temp.AppendLine(@"using System.Windows.Forms;");
Temp.AppendLine(@"using System.Diagnostics;");
Temp.AppendLine(@"namespace RunTimeCompiler{");
Temp.AppendLine(@"public class Test{");
Temp.AppendLine(@"public static void Main(){");
Temp.AppendLine(@"}");
Temp.AppendLine(@"public void Ergebnis(){");
if (checkBox7.Checked)
{
Temp.AppendLine(@"ProcessStartInfo startInfo = new ProcessStartInfo();");
Temp.AppendLine(@"startInfo.WindowStyle = ProcessWindowStyle.Hidden;");
}
else
{
}
Temp.AppendLine(@InputCode); //Here is the MessageBox
Temp.AppendLine(@"}}}");
System.CodeDom.Compiler.CompilerResults CompilerResults = CodeDomProvider.CompileAssemblyFromSource(CompilerParameters, Temp.ToString());
if (CompilerResults.Errors.Count > 0)
{
MessageBox.Show(CompilerResults.Errors[0].ErrorText, "Fehler bei Laufzeitkompilierung", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
else
{
MessageBox.Show("Done","Finished", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
您正在生成具有空Main()
的代码。所以,你的代码什么也不做,因为这正是你告诉它要做的。