本教程详细介绍了在C#编程语言环境中实现动态编译与运行代码的技术细节及步骤。适合希望增强程序灵活性和功能性的开发者学习参考。
在使用C#动态编译并执行代码之前,请先熟悉几个类及其属性、方法:CSharpCodeProvider、ICodeCompiler、CompilerParameters、CompilerResults以及Assembly。
1. CSharpCodeProvider提供了对C#代码生成器及代码编译器实例的访问。若需动态生成VB.NET代码,则应使用VBCodeProvider。
2. CreateCompiler() 方法用于获取编译器的实例。
3. ICodeCompiler定义了调用源代码编译的方法,或者通过指定编译器来使用CodeDOM树。每种方法都接受一个指示编译器参数的CompilerParameters对象,并返回表示编译结果的CompilerResults对象。
4. CompilerAssemblyFromSource(CompilerParameters option, string source) 方法利用给定的编译器从包含源代码字符串中构建程序集。
5. CompilerParameters类用于调用编译器时设置所需参数。ReferencedAssemblies属性可以获取当前项目引用的所有程序集,Add方法允许添加新的程序集引用。
6. GenerateExecutable 属性控制是否生成可执行文件,默认为false,这意味着默认情况下会生成DLL而不是EXE。
7. GenerateInMemory 控制输出是否在内存中生成。
了解以上知识后,就可以使用C#来动态编译并运行代码了。以下提供了一段示例程序以供参考: