如何在C#中动态编​​译源文件到程序集

时间:2015-03-05 09:56:12

标签: c# .net

我知道一个名为AssemblyBuilder的类,我原本以为我可以用它来传递一个包含C#源文件的文件夹,或者将一个C#源文件传递给它,以便将源代码编译成一个程序集(。 dll)然后可以在配置文件中引用。

我知道可以编译C#的csc.exe,我正在寻找一种动态复制它的方法。

我无法弄清楚如何使用AssemblyBuilder,或者这是否是要使用的错误类,或者我是否应该执行类似于以下操作: http://support.microsoft.com/kb/304655

请你指出我正确的方向。

1 个答案:

答案 0 :(得分:1)

您可能需要查看CodeDomProvider

示例摘录:

CompilerParameters parms = new CompilerParameters
                                           {
                                               GenerateExecutable = false,
                                               GenerateInMemory = true,
                                               IncludeDebugInformation = false
                                           };

            parms.ReferencedAssemblies.Add("System.dll");
            parms.ReferencedAssemblies.Add("System.Data.dll");
            CodeDomProvider compiler = CSharpCodeProvider.CreateProvider("CSharp"); 

            return compiler.CompileAssemblyFromSource(parms, source); 

警告:垃圾收集器不会处理以这种方式动态构建的程序集。