В этой статье описывается компиляция кода из текстового источника с помощью компилятора C#.
Исходная версия продукта: Visual Studio, платформа .NET Framework
Исходный номер базы знаний: 304655
Аннотация
Microsoft платформа .NET Framework предоставляет классы, которые позволяют программно получить доступ к компилятору языка C#. Это может быть полезно, если вы хотите написать собственные программы для компиляции кода. В этой статье представлен пример кода, который позволяет компилировать код из текстового источника. Приложение позволяет либо просто собрать исполняемый файл, либо собрать исполняемый файл и запустить его. Все ошибки, возникающие в процессе компиляции, отображаются в форме.
Требования
- Visual Studio
- Компилятор языка Visual C#
Компиляция кода с помощью компилятора C#
Платформа .NET Framework предоставляет интерфейс выполнения компилятора ICodeCompiler . Класс CSharpCodeProvider реализует этот интерфейс и предоставляет доступ к экземплярам генератора кода C# и компилятора кода. Следующий пример кода создает экземпляр CSharpCodeProvider и использует его для получения ссылки на ICodeCompiler интерфейс.
Компиляция и интерпретация за 10 минут
CSharpCodeProvider codeProvider = new CSharpCodeProvider(); ICodeCompiler icc = codeProvider.CreateCompiler();
Получив ссылку на ICodeCompiler интерфейс, вы можете использовать ее для компиляции исходного кода. Параметры передаются компилятору с помощью CompilerParameters класса . Пример:
System.CodeDom.Compiler.CompilerParameters parameters = new CompilerParameters(); parameters.GenerateExecutable = true; parameters.OutputAssembly = Output; CompilerResults results = icc.CompileAssemblyFromSource(parameters,SourceString);
Приведенный выше код использует CompilerParameters объект , чтобы сообщить компилятору, что вы хотите создать исполняемый файл (в отличие от БИБЛИОТЕКи DLL) и что вы хотите вывести результируемую сборку на диск.
CompileAssemblyFromSource Вызов — это место, где компилируется сборка. Этот метод принимает объект параметров и исходный код, который является строкой. После компиляции кода можно проверить наличие ошибок компиляции. Используйте возвращаемое значение из CompileAssemblyFromSource , которое является CompilerResults объектом . Этот объект содержит коллекцию ошибок, которая содержит все ошибки, возникшие во время компиляции.
if (results.Errors.Count > 0) < foreach(CompilerError CompErr in results.Errors) < textBox2.Text = textBox2.Text + «Line number » + CompErr.Line + «, Error Number: » + CompErr.ErrorNumber + «, ‘» + CompErr.ErrorText + «;» + Environment.NewLine + Environment.NewLine; >>
Существуют и другие варианты компиляции, например компиляция из файла. Можно также выполнить пакетную компиляцию, что означает, что можно скомпилировать несколько файлов или источников одновременно.
Пошаговый пример процедуры
- Создайте новое приложение .NET для .NET для Visual C# для Windows. Форма Form1 создается по умолчанию.
- Добавьте элемент управления Button в Form1, а затем измените его свойство Text на Build.
- Добавьте еще один элемент управления Button в Form1, а затем измените его свойство Text на Run.
- Добавьте два элемента управления TextBox в Form1, задайте для свойства Multiline для обоих элементов управления значение True, а затем размер этих элементов управления, чтобы можно было вставить несколько строк текста в каждый элемент управления.
- В редакторе кода откройте исходный файл Form1.cs .
- Form1 Вставьте в класс следующий обработчик нажатия кнопки.
private void button1_Click(object sender, System.EventArgs e) < CSharpCodeProvider codeProvider = new CSharpCodeProvider(); ICodeCompiler icc = codeProvider.CreateCompiler(); string Output = «Out.exe»; Button ButtonObject = (Button)sender; textBox2.Text = «»; System.CodeDom.Compiler.CompilerParameters parameters = new CompilerParameters(); //Make sure we generate an EXE, not a DLL parameters.GenerateExecutable = true; parameters.OutputAssembly = Output; CompilerResults results = icc.CompileAssemblyFromSource(parameters, textBox1.Text); if (results.Errors.Count >0) < textBox2.ForeColor = Color.Red; foreach (CompilerError CompErr in results.Errors) < textBox2.Text = textBox2.Text + «Line number » + CompErr.Line + «, Error Number: » + CompErr.ErrorNumber + «, ‘» + CompErr.ErrorText + «;» + Environment.NewLine + Environment.NewLine; >> else < //Successful Compile textBox2.ForeColor = Color.Blue; textBox2.Text = «Success!»; //If we clicked run then launch our EXE if (ButtonObject.Text == «Run») Process.Start(Output); >>
В начале файла добавьте следующие using операторы:
using System.CodeDom.Compiler; using System.Diagnostics; using Microsoft.CSharp;
public Form1()
Примечание. Возникает ошибка компилятора.
using System; namespace HelloWorld < /// /// Summary description for Class1. /// class HelloWorldClass < static void Main(string[] args) < Console.WriteLine(«Hello World!»); Console.ReadLine(); >> >
Примечание.
Вы можете изменить код в текстовом поле, чтобы увидеть различные ошибки компилятора. Например, удалите одну из точкой с запятой и перестройте код.
Ссылки
- Класс CSharpCodeProvider
- Интерфейс ICodeCompiler
Обратная связь
Были ли сведения на этой странице полезными?
Источник: learn.microsoft.com
Что такое компиляция программы?
В компьютерных науках компиляцией называют «перевод» программы с языка высокого уровня на понятный компьютеру язык нулей и единиц. . В музыке компиляцией называют сборник песен разных исполнителей или подборку хитов одного исполнителя.
В чем состоит компиляция программы?
Компоновка Также называется связывание, сборка или линковка. Это последний этап процесса получения исполняемого файла, состоящий из связывания воедино всех объектных файлов проекта. При этом возможны ошибки связывания.
Что означает слово компилировать программу?
Компиляция (программирование) — трансляция программы, составленной на исходном языке высокого уровня, в эквивалентную программу на низкоуровневом языке, близком машинному коду (абсолютный код, объектный модуль, иногда на язык ассемблера), выполняемая компилятором.
Как работает компиляция?
Как работает компилятор? Преобразование программного кода в машинный называется компиляцией. . В этот момент он “статически” (то есть без запуска) транслируется в машинный код. Это сложный процесс, в котором сначала текст программы разбирается на части и анализируется, а затем генерируется код, понятный процессору.
Что такое скомпилировать?
скомпилировать). Писать, сочинять что-л., заимствуя все данные (материалы, результаты наблюдений и т. д.) из чужих работ, не занимаясь самостоятельным исследованием вопроса.
Что такое компиляция по информатике?
Под компиляцией понимаются процессы, которые облегчают диалог специалиста по написанию программ и компьютера. . То есть, компиляцией является преобразование входных данных (исходного кода), описывающих некий алгоритм, выполненный на проблемном языке, в выбранный набор команд объектного кода (машинный язык).
Какая обработка выполняется на этапе компоновки программы?
Компоновка – это один из этапов создания исполняемого файла. Компилировать – это значит проводить трансляцию машинной программы с проблемно-ориентированного языка на машинно-ориентированный язык (создание объектного кода) для ее исполнения. . В объектном файле имеются ссылки на различные системные функции.
Какие функции выполняет компилятор?
Компиля́тор – это программа, которая переводит текст, написанный на языке программирования, в набор машинных кодов..
Какие действия выполняются на этапе компиляции программы?
- Лексический анализ. Последовательность символов исходного файла преобразуется в последовательность лексем.
- Синтаксический анализ. Последовательность лексем преобразуется в дерево разбора.
- Семантический анализ. .
- Оптимизация. .
- Генерация кода.
Для чего необходимо компилировать программу?
Программу на Паскале надо предварительно скомпилировать. Компиляция означает перевод исходной программы с языка Pascal в объектную программу – на язык компьютера. Программы на языке Pascal и других компилируемых языках выполняются немного быстрее, чем программы с интерпретируемых языков (например, Бейсика). .
Что означает перекомпилировать?
Смотреть что такое «КОМПИЛИРОВАТЬ» в других словарях: КОМПИЛИРОВАТЬ — (лат. compilare грабить, выбирать). Собирать сведения из разных книг и составлять из них нечто целое.
Что значит скомпилирован?
скомпилированный — скомпонованный, списанный, содранный, составленный Словарь русских синонимов.
Как работает компилятор C++?
- Препроцессор берет файл исходного кода C++ и обрабатывает директивы #include s, #define s и другие директивы препроцессора. .
- Компиляция: компилятор берет выходные данные препроцессора и создает из них объектный файл.
Что делает препроцессор?
Препроцессор — это компьютерная программа, принимающая данные на входе и выдающая данные, предназначенные для входа другой программы (например, компилятора). . Наиболее частый случай использования препроцессора — обработка исходного кода перед передачей его на следующий шаг компиляции.
Как работает интерпретатор?
Интерпретатор – это программа, которая конвертирует ваши инструкции, написанные на Python, в байт-код и выполняет их. . Это система из компилятора и интерпретатора. Компилятор переводит исходный код программы в промежуточное представление (байт-код), а интерпретатор (виртуальная машина) выполняет этот байт-код.
Источник: vadimuz.ru
Компиляция — что это такое? Определение, значение, перевод
Компиляция в русском языке может означать как минимум две вещи:
В компьютерных науках компиляцией называют «перевод» программы с языка высокого уровня на понятный компьютеру язык нулей и единиц. Для этой нелёгкой задачи существуют специальные программы, называемые «компиляторами». Если вы написали программу на вашем С++, и она успешно откомпилировалась, это ещё совсем не значит, что она будет так же безупречно работать. Тут следует отметить, что не все современные программы проходят компиляцию в её традиционном смысле. Некоторые языки программирования, такие, например, как PHP, «интерпретируются» компьютером прямо таки «налету», выплёвывая ошибки криворуких программистов на веб-странички.
В музыке компиляцией называют сборник песен разных исполнителей или подборку хитов одного исполнителя. В своём самом широком смысле «компиляция» означает «сборник» или «подборка». Именно в этом смысле российское высокопоставленное жульё употребляет это слово по отношению к расследованиям о наворованных дворцах.
Метки / Компьютеры
Понравилась страница?
Пожалуйста, поделитесь ссылкой с друзьями:
Источник: clov.net