C#CodeDom使用Builders表单中的TextBox

时间:2013-06-14 15:29:10

标签: c# codedom

也许你不理解标题,但我的问题是: 我有一个建筑师。此构建器创建一个输出(.exe),将我的图片文件夹上载到FTP服务器。我实际上想知道如何使用构建器表单中的文本框来获取要编译的源代码的凭据?

构建器表单 - > TextBox(我将输入凭据)----> TextBox的输入将用作将要编译的源代码中FTP-Server的登录凭据。

我该怎么做? 如果我只是说

Temp.AppendLine(@"request.Credentials = new NetworkCredential(textBox7.Text,textBox8.Text);");

我收到错误,因为输出无法找到textBox ...

2 个答案:

答案 0 :(得分:0)

你的意思是这样做吗?

Temp.AppendLine(string.Format("request.Credentials = new NetworkCredential(@\"{0}\",@\"{1}\");", textBox7.Text, textBox8.Text));

答案 1 :(得分:0)

        String InputCode = String.Empty;

        InputCode = "MessageBox.Show((1 + 2 + 3).ToString());";

        System.CodeDom.Compiler.CodeDomProvider CodeDomProvider = System.CodeDom.Compiler.CodeDomProvider.CreateProvider("CSharp");

        System.CodeDom.Compiler.CompilerParameters CompilerParameters = new System.CodeDom.Compiler.CompilerParameters();
        CompilerParameters.ReferencedAssemblies.Add("System.dll");
        CompilerParameters.ReferencedAssemblies.Add("System.Windows.Forms.dll");
        CompilerParameters.CompilerOptions += "/target:winexe" + " " + "/win32icon:" + "\"" + textBox6.Text + "\"";
        CompilerParameters.GenerateInMemory = true;


        StringBuilder Temp = new StringBuilder();
        Temp.AppendLine(@"using System;");
        Temp.AppendLine(@"using System.Windows.Forms;");
        Temp.AppendLine(@"namespace RunTimeCompiler{");
        Temp.AppendLine(@"public class Test{");
        Temp.AppendLine(@"public static void Main(){");
        Temp.AppendLine(@"public void Ergebnis(){");

        Temp.AppendLine(InputCode);
        Temp.AppendLine(@"}}}}}");

        System.CodeDom.Compiler.CompilerResults CompilerResults = CodeDomProvider.CompileAssemblyFromSource(CompilerParameters, Temp.ToString());
        //Auf CompilerFehler prüfen
        if (CompilerResults.Errors.Count > 0)
        {
            MessageBox.Show(CompilerResults.Errors[0].ErrorText, "Fehler bei Laufzeitkompilierung", MessageBoxButtons.OK, MessageBoxIcon.Error);
            return;