我想学习用c#构建文件,所以我创建了一个Windows窗体应用程序并创建了这个代码/表单。但它似乎没有用。
。
using System;
using System.Windows.Forms;
using System.CodeDom.Compiler;
using Microsoft.CSharp;
namespace teztie
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "*.exe |*.exe";
DialogResult result = sfd.ShowDialog();
if (result == DialogResult.OK)
{
build(sfd.FileName, textBox1.Text, textBox2.Text);
}
}
private void build(string output, string msg, string name)
{
CompilerParameters p = new CompilerParameters();
p.GenerateExecutable = true;
p.ReferencedAssemblies.AddRange(new string[] { "System.dll", "System.Windows.Forms.dll"});
p.OutputAssembly = output;
p.CompilerOptions = "/t:winexe";
string source = Properties.Resources.source;
string errors = string.Empty;
source = source.Replace("[MSG]", msg);
source = source.Replace("[NAME]", name);
CompilerResults results = new CSharpCodeProvider().CompileAssemblyFromSource(p, source);
if (results.Errors.Count > 0)
{
foreach (CompilerError err in results.Errors)
{
errors += "Error: " + err.ToString() + "\r\n\r\n";
}
}
else
{
errors = "Successfully built:\n" + output;
}
MessageBox.Show(errors, "Build", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
的Source.txt:
using System;
using System.Windows.Forms;
namespace code
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
MessageBox.Show("[msg]", "[title]" );
}
}
}
但是当我点击编译按钮时,它会给我一个错误。 名称InitializeComponent在当前上下文中不存在。
答案 0 :(得分:3)
构造函数正在调用名为“InitializeComponent”的方法,但该方法未在您的类中定义。通常,VS设计器使用InitializeComponent来保存在运行时在设计器中应用选择所需的代码。如果您从示例中复制此表单,请向此类添加一个名为“InitializeComponent”的空方法,或者从构造函数中删除此方法调用。