使用CodeDOM将代码和类文件一起导出

时间:2013-04-14 19:34:16

标签: c# codedom system-codedom-compiler

我已经为codeDOM编译器创建了一个表单,它可以编译我的代码,如果它在一个文本文件中,但我希望能够编译文本文件中的源代码和文本文件中的类,以便它们可以一起工作。

我不确定如何编写codeDOM来将我的类文件添加为要编译的主要源的资源

到目前为止我所拥有的是什么

codeDOM编译器

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.CodeDom.Compiler;
using Microsoft.CSharp;


namespace CodeDOMSourceTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void btnCompile_Click(object sender, EventArgs e)
        {
            CompilerParameters Params = new CompilerParameters();
            Params.GenerateExecutable = true;
            Params.ReferencedAssemblies.Add("System.dll");
            Params.ReferencedAssemblies.Add("TextFile1.txt");

            Params.OutputAssembly = "output.exe";

            string Source = Properties.Resources.CodeDOMSource;
            Source = Source.Replace("[TEXT]", txtReplace.Text);

            CompilerResults Results = new CSharpCodeProvider().CompileAssemblyFromSource(Params, Source);

            if (Results.Errors.Count > 0)
            {
                foreach (CompilerError err in Results.Errors)
                    Console.WriteLine(err.ToString());
            }
            else Console.WriteLine("Compiled just fine!");
        }
    }
}

源文件

namespace testingCodeDOM
{
class Program
{
static void Main()
{
System.Console.WriteLine("[TEXT]");
Console.WriteLine(Testing.textwork());
System.Console.Read();
}
}
}

ClassFile的

namespace testingCodeDOM
{
    class Testing
    {
        public static string textwork()
        {
            string hello = "calss worked";
            return hello;
        }enter code here
    }
}

任何想法如何做到这一点,因为我已经谷歌搜索了我没有或至少没有我理解

在一边不是这个只与源一起工作,但我试图改编它以使用类文件以及

1 个答案:

答案 0 :(得分:0)

The CompileAssemblyFromSource() method可以使用任意数量的源代码字符串(因为它是params方法)。所以,你可以这样称呼:

CompileAssemblyFromSource(Params, Source, ClassFile)

其中ClassFilestring,其中包含第二个文件的文本。