Динамическое создание и компиляция исходного кодаDynamic Source Code Generation and Compilation

В среду .NET Framework включен механизм, который называется Code Document Object Model (CodeDOM). Он позволяет разработчикам программ, порождающих исходный код, создавать код на нескольких языках программирования во время выполнения на основе единой модели, представляющей код для визуализации.The .NET Framework includes a mechanism called the Code Document Object Model (CodeDOM) that enables developers of programs that emit source code to generate source code in multiple programming languages at run time, based on a single model that represents the code to render.

Для представления исходного кода элементы CodeDOM связываются друг с другом, образуя структуру данных, известную как граф CodeDOM, которая моделирует структуру некоторого исходного кода.To represent source code, CodeDOM elements are linked to each other to form a data structure known as a CodeDOM graph, which models the structure of some source code.

Пространство имен System.CodeDom определяет типы, с помощью которых логическая структура исходного кода может быть представлена независимо от конкретного языка программирования.The System.CodeDom namespace defines types that can represent the logical structure of source code, independent of a specific programming language. Пространство имен System.CodeDom.Compiler определяет типы, используемые для формирования исходного кода на основе графов CodeDOM и управления компиляцией исходного кода на поддерживаемых языках.The System.CodeDom.Compiler namespace defines types for generating source code from CodeDOM graphs and managing the compilation of source code in supported languages. Набор поддерживаемых языков может быть расширен разработчиками или поставщиками компиляторов.Compiler vendors or developers can extend the set of supported languages.

Независимое от языка моделирование исходного кода может быть полезно, если программа должна создавать исходный код для модели программы на нескольких языках или если конечный язык заранее не определен.Language-independent source code modeling can be valuable when a program needs to generate source code for a program model in multiple languages or for an uncertain target language. Например, некоторые конструкторы используют модель CodeDOM в качестве интерфейса абстракции от языка для получения исходного кода на требуемом языке программирования, если имеется поддержка CodeDOM для этого языка.For example, some designers use the CodeDOM as a language abstraction interface to produce source code in the correct programming language, if CodeDOM support for the language is available.

В платформе .NET Framework имеются генераторы и компиляторы кода для языков CSharpCodeProvider, JScriptCodeProvider и VBCodeProvider.The .NET Framework includes code generators and code compilers for CSharpCodeProvider, JScriptCodeProvider, and VBCodeProvider.

СодержаниеIn This Section

Использование CodeDOMUsing the CodeDOM
Описываются общие случаи применения, а также демонстрируется создание простого графа объектов с использованием CodeDOM.Describes common uses, and demonstrates building a simple object graph using the CodeDOM.

Создание исходного кода и компиляция программы из графа CodeDOMGenerating Source Code and Compiling a Program from a CodeDOM Graph
Описание способов формирования исходного кода и его компиляции внешним компилятором с использованием классов, определенных в пространстве имен System.CodeDom.Compiler.Describes how to generate source code and compile the generated code with an external compiler using classes defined in the System.CodeDom.Compiler namespace.

Практическое руководство. Создание XML-файла документации с использованием CodeDOMHow to: Create an XML Documentation File Using CodeDOM
Описание использования CodeDOM для формирования кода с комментариями к XML-документации и компиляции сформированного кода для создания XML-документации.Describes how to use CodeDOM to generate code with XML documentation comments, and compile the generated code so that it creates the XML documentation output.

Практическое руководство. Создание класса с помощью CodeDOMHow to: Create a Class Using CodeDOM
Описание использования CodeDOM для создания класса, содержащего поля, свойства, метод, конструктор и точку входа.Describes how to use CodeDOM to generate a class containing fields, properties, a method, a constructor, and an entry point.

СправочникиReference

System.CodeDom
Определяет элементы, представляющие элементы кода на языках программирования, предназначенных для среды CLR.Defines elements that represent code elements in programming languages that target the common language runtime.

System.CodeDom.Compiler
Определяет интерфейсы для формирования и компиляции кода во время выполнения.Defines interfaces for generating and compiling code at run time.

Краткий справочник по CodeDOMCodeDOM Quick Reference
Предоставляет разработчикам быстрый способ поиска элементов CodeDOM, представляющих элементы исходного кода.Provides a quick way for developers to find the CodeDOM elements that represent source code elements.