Список языков, которые вы можете компилировать во время выполнения в C#

Пример Запуск введенного пользователем кода в C# показывает как позволить пользователю вводить код C#, компилировать во время выполнения и выполнять результат, но как вы знаете, какие языки вы можете скомпилировать таким образом? Вы можете догадаться, что C# и Visual Basic, но вы также можете скомпилировать другие языки.

В этом примере используется следующий код для перечисления языков, которые вы можете компилировать во время выполнения, с помощью класса CodeDomProvider.

//csharphelper.com/blog/2016/11/run-user-entered-code-in-c/"> Запуск введенного пользователем кода в C#  показывает как позволить пользователю вводить код C#, компилировать во время выполнения и выполнять результат, но как вы знаете, какие языки вы можете скомпилировать таким образом? Вы можете догадаться, что C# и Visual Basic, но вы также можете скомпилировать другие языки. 
private void Form1_Load(object sender, EventArgs e) { string txt = ""; CompilerInfo[] compiler_infos = CodeDomProvider.GetAllCompilerInfo(); foreach (CompilerInfo info in compiler_infos) { if (info.IsCodeDomProviderTypeValid) { CodeDomProvider provider = info.CreateProvider(); txt += "Provider: " + provider.ToString() + "\r\n"; string extensions = ""; string default_extension = provider.FileExtension; if (default_extension[0] != '.') default_extension = '.' + default_extension; foreach (string extension in info.GetExtensions()) { extensions += ", " + extension; if (extension == default_extension) extensions += " (default)"; } if (extensions.Length > 0) extensions = extensions.Substring(2); txt += " Extensions: " + extensions + "\r\n"; string languages = ""; string default_language = CodeDomProvider.GetLanguageFromExtension( default_extension); foreach (string language in info.GetLanguages()) { languages += ", " + language; if (language == default_language) languages += " (default)"; } if (languages.Length > 0) languages = languages.Substring(2); txt += " Languages: " + languages + "\r\n"; CompilerParameters parameters = info.CreateDefaultCompilerParameters(); txt += " Options: " + parameters.CompilerOptions + "\r\n"; txt += " Warning Level: " + parameters.WarningLevel + "\r\n"; } } txtInfo.Text = txt; txtInfo.Select(0, 0); }

Программа использует метод CodeDomProvider класса GetAllCompilerInfo для получения информации о доступных компиляторах. Затем он перебирает возвращаемую информацию. Для каждого объекта CompilerInfo программа проверяет свойство объекта IsCodeDomProviderValid объекта, чтобы убедиться, что компилятор действительно действителен на компьютере. Если компилятор действителен, код отображает информацию об этом компиляторе.

Чтобы отобразить информацию о компиляторе, код сначала создает поставщика для этого компилятора и отображает его имя. Затем он перебирает поддерживаемые расширения поставщика, перечисляя их. Он добавляет текст «(по умолчанию)» после расширения по умолчанию поставщика.

Далее код выполняет аналогичные шаги, чтобы перечислить языки, поддерживаемые компилятором. Они предоставляют строки, такие как C# и CSharp, которые вы можете использовать для языка в предыдущий пример .

Наконец, в коде перечислены параметры и уровень предупреждения компилятора.

Источник: http://csharphelper.com/blog/2016/11/list-languages-that-you-can-compile-at-runtime-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Adblock
detector