现在的位置: 首页 > 综合 > 正文

使用 .Net Framework 的 System.CodeDom 命名空间动态生成源代码并编译

2013年05月17日 ⁄ 综合 ⁄ 共 2198字 ⁄ 字号 评论关闭

关于 System.CodeDom 命名空间,MSDN 对其做了如下描述:

 

.NET Framework 中包含一个名为“代码文档对象模型”(CodeDOM) 的机制,该机制使编写源代码的程序的开发人员可以在运行时,根据表示所呈现代码的单一模型,用多种编程语言生成源代码。

为表示源代码,CodeDOM 元素相互链接以形成一个数据结构(称为 CodeDOM 图),它以某种源代码的结构为模型。

System.CodeDom 命名空间定义可表示源代码逻辑结构(与具体的编程语言无关)的类型。System.CodeDom.Compiler 命名空间定义从 CodeDOM 图生成源代码的类型,以及在受支持的语言中管理源代码编译的类型。编译器供应商或开发人员可以扩展受支持语言的集合。

当程序需要用多种语言为程序模型或者为不确定的目标语言生成源代码时,与语言无关的源代码建模很有价值。例如,如果语言的 CodeDOM 支持可用,则一些设计器将 CodeDOM 用作语言抽象接口,以用正确的编程语言生成源代码。

.NET Framework 中包含 C#、JScript 和 Visual Basic 的代码生成器和代码编译器。

 

 

1.使用 CodeDOM 代码生成器生成源代码

 

代码生成图通常包含在 CodeCompileUnit 中。若要为包含 CodeDOM 图的 CodeCompileUnit 生成代码,请调用代码提供程序的 GenerateCodeFromCompileUnit 方法。此方法有一个可用来生成源代码的 TextWriter 参数,因此,有时需要首先创建一个可以写入的 TextWriter。下面的示例演示了如何从 CodeCompileUnit 生成代码以及如何将生成的源代码写入名为 HelloWorld.cs 的文件。

 

 

2.使用 CodeDOM 代码提供程序编译程序集

 

下面的代码示例演示如何使用从 CodeDomProvider 类派生的 CodeDom 提供程序编译源文件。

 

 

抱歉!评论已关闭.