Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 16.12.2017
Сообщений: 1
.NET 4.x

Динамическая компиляция кода

16.12.2017, 15:24. Показов 868. Ответов 3

Студворк — интернет-сервис помощи студентам
Здравствуйте,
Есть вот такой код

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
namespace ConsoleCompiler
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            Console.WriteLine("Введите имя файла:");
            string name = Console.ReadLine();
            string content = Console.ReadLine();
 
            string source =
            @" namespace Prog
{ 
    public class Bar 
    { 
        static void Main(string[] args) 
        { 
            Bar.SayHello(); 
            System.Console.WriteLine(content);
            System.Console.ReadKey();
        }  
    } 
} 
            ";
            Dictionary<string, string> providerOptions = new Dictionary<string, string> 
                { 
                    {"CompilerVersion", "v4.0"} 
                };
            CSharpCodeProvider provider = new CSharpCodeProvider(providerOptions);
 
            CompilerParameters compilerParams = new CompilerParameters { OutputAssembly = name + ".exe", GenerateExecutable = true };
            CompilerResults results = provider.CompileAssemblyFromSource(compilerParams, source);
 
            Console.WriteLine("Number of Errors: {0}", results.Errors.Count);
            foreach (CompilerError err in results.Errors)
            {
                Console.WriteLine("ERROR {0}", err.ErrorText);
            }
            Console.ReadLine();
        }
    }
}
Вопрос, как переменую string content вывести в коде который должен скомпилироватся, а именно в string source ?
Спасибо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.12.2017, 15:24
Ответы с готовыми решениями:

Динамическая компиляция кода
Всем привет, хочу спросить у вас совет по теории. Код мне не нужен, главное направление :) Очень давно я натыкался на такую способность...

Динамическая компиляция кода
Доброго времени суток, уважаемые форумчане. Возникла такая проблема: Приложение делает post запрос и в ответ получает код метода в...

Динамическая компиляция кода
Приветствую всех. Что мы имеем. А имеем мы следующую задачу: Динамическое создание объектов (например кнопок). Объявление...

3
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18267 / 14190 / 5368
Регистрация: 17.03.2014
Сообщений: 28,877
Записей в блоге: 1
16.12.2017, 21:38
MAlex85,
C#
10
11
12
13
14
15
16
17
18
19
20
21
22
23
            string source = 
            @" namespace Prog
{ 
    public class Bar 
    { 
        static void Main(string[] args) 
        { 
            Bar.SayHello(); 
            System.Console.WriteLine(""$content$"");
            System.Console.ReadKey();
        }  
    } 
} 
            ".Replace("$content$", content);
0
139 / 139 / 53
Регистрация: 14.06.2016
Сообщений: 467
17.12.2017, 09:31
а может быть что то типа такого ?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
namespace Test {
 
    public abstract class BaseProgram {
        public string Content { get; set; }
        public abstract void OnStarted();
    }
 
    static class Program {
        static void Main(string[] args) {
            string content = Console.ReadLine();
 
            string source =
            @"
public class Program : Test.BaseProgram 
{ 
    public override void OnStarted()
    {
        System.Console.WriteLine(Content);
        System.Console.ReadKey();
    }
} 
            ";
            Dictionary<string, string> providerOptions = new Dictionary<string, string> { {"CompilerVersion", "v4.0"} };
 
            CSharpCodeProvider provider = new CSharpCodeProvider(providerOptions);
            
            CompilerParameters compilerParams = new CompilerParameters { OutputAssembly = name + ".exe", GenerateExecutable = false, GenerateInMemory = true };
            compilerParams.ReferencedAssemblies.Add(Assembly.GetExecutingAssembly().Location);
 
            CompilerResults results = provider.CompileAssemblyFromSource(compilerParams, source);
 
            if (!results.Errors.HasErrors) {
                var prog = Activator.CreateInstance(results.CompiledAssembly.FullName, "Program").Unwrap() as BaseProgram;
                prog.Content = content;
                prog.OnStarted();
            }
            else {
                Console.WriteLine("Number of Errors: {0}", results.Errors.Count);
                foreach (CompilerError err in results.Errors) {
                    Console.WriteLine("ERROR {0}", err.ErrorText);
                }
                Console.ReadLine();
            }
    }
}
0
9 / 9 / 1
Регистрация: 16.12.2017
Сообщений: 19
17.12.2017, 18:10
Для пользовательских скриптов лучше смотреть сюда
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.12.2017, 18:10
Помогаю со студенческими работами здесь

Динамическая компиляция кода
Добрый день, возник следующий вопрос. Есть основная программа, стандартная windows форма, в которой пользователем заполняются поля...

Динамическая компиляция кода
Мне нужна динамическая компиляция кода в приложении из файла какого то с кодом... при этом мне надо что бы этот текст выполнялся в самой...

Динамическая компиляция кода
Всем привет! Как в C# можно динамически, то есть во время выполнения программы, обратиться к одному из объектов формы (например,...

Динамическая компиляция исходного кода
Привет всем. Надеюсь что я не один кто хотел написать билдер на C#. У меня имеется код ,находящийся в RichTextBox.Text (Это форма). ...

Динамическая компиляция кода в приложении Windows Forms
Кто может объяснить как использовать динамическую компиляцию кода в проекте с win forms? Мне необходима программа, которая бы считывала...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru