|
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
|
|
Динамическая компиляция кода30.11.2013, 23:52. Показов 1423. Ответов 7
Метки нет (Все метки)
Всем привет, хочу спросить у вас совет по теории. Код мне не нужен, главное направление
![]() Очень давно я натыкался на такую способность языка, как самокомпилирование, то есть я пишу свою апликаху, после чего, могу прям в ней в виде строки(код) загнать или дать файл *.cs и она его скомпилирует и выполнит. На сколько я помню, это называется рефлекции? Не хочу тратить время, чтобы искать то, что мне не надо, по этому первый вопрос, правильно ли я название запомнил? И второе, может кто-то делал или имел опыт, если реализовать такую апликаху, можно ли реализовать подобие кэша? То есть, чтобы я дал ей файлы, она их скомпилила, засунула в кэш и при повторном запуске могла им пользоваться. Вот такие вопросы.
0
|
|
| 30.11.2013, 23:52 | |
|
Ответы с готовыми решениями:
7
Динамическая компиляция кода Динамическая компиляция кода Динамическая компиляция кода |
|
624 / 495 / 43
Регистрация: 05.07.2010
Сообщений: 1,589
|
|
| 01.12.2013, 01:14 | |
|
1) Reflection конечно тут используется, но это называется позднее связывание.
2) Перебилдить проще чем заниматься организацией кэша и различением его содержимого. Можно завести библиотеку исходных кодов и взвалить на юзера бремя классификации и наименования содержимого этой библиотеки исходников.
0
|
|
| 01.12.2013, 11:19 | ||
|
Один из примеров использования: Есть куча Web сервисов, надо создать приложение, которое будет работать с этими сервисами без перекомпиляции, пользователь задает адрес, выбирает метод, инициализирует параметры и вызывает метод сервиса, смотрит результат. Используем wsdl, которая генерит нам прокси класс. Далее мы его компилим в сборку и сохраняем в бд, на диске, и т.д. После берем из нее созданный тип, методы и отображаем пользователю и т.д., после это дергаем сервис.
0
|
||
|
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
|
|
| 01.12.2013, 13:37 [ТС] | |
|
Я хоть в правильном месте тему создал? Меня интересует минимум консольное приложение, без веб-сервисов. И, видимо, я плохо объяснил, что имею ввиду по кэшем, сейчас попробую еще раз
![]() Суть такая, лежит моя ЕХЕ, которая описывает некоторый набор интерфейсов, классов... Далее подключаются скрипты, то есть любой по своим нуждам пишет *.cs файлик используя интерфейсы с моей ЕХЕ и ложит рядом с ЕХЕ, запускает ее и ЕХЕ компилит это все и в итоге мы имеем мой функционал + функционал описанный в скриптах. По сколько всем известно, что чем больше файлов и чем больше сами файлы, то компиляция проходит дольше, по этому каждый раз компилить заново не вариант. Я провел некоторый ресерч в этой сфере и вроде наткнулся на то, что такое кэширование выполняется в dll. А потом при старте ЕХЕ проверять, если dll свежая, то загружать ее, если нет, то перекомпилить все. Это реализуется за счет Assemblies. Верно ли я классифицировал нужные мне компоненты или может еще есть варианты?
0
|
|
| 01.12.2013, 13:42 | ||||
|
0
|
||||
|
1274 / 975 / 113
Регистрация: 12.01.2010
Сообщений: 1,971
|
|
| 01.12.2013, 13:52 | |
|
проще сделать в своей ехе кнопку "перекомпилироваться" и всё делов
0
|
|
|
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
|
|||||||||||
| 01.12.2013, 21:51 [ТС] | |||||||||||
|
Ну предполагается, что сам код ЕХЕ скрытый, то есть предоставляет некий интерфейс для работы, а другие, при помощи скриптов используют его.
Получается вот как:
Теперь вот думаю, как использовать классы из dll внутри ЕХЕ) Может знаете? После компиляции в dll у меня остается поле с Assemly этой dll и я могу ее проитерировать на ее содержимое.
Добавлено через 16 минут Пытался вот через Activator.CreateInstance. И оно создает объект, конструктор отрабатывает, но вот, а как мне вызвать метод от туда, если тип на момент компиляции ЕХЕ не известен. Добавлено через 13 минут Хотя, видимо, это не логично создавать эти объекты внутри EXE если это он предоставляет интерфейс для скриптов... Наверно так) Видимо разобрался. Всем спасибо.
0
|
|||||||||||
| 01.12.2013, 21:53 | ||
|
0
|
||
| 01.12.2013, 21:53 | |
|
Помогаю со студенческими работами здесь
8
Динамическая компиляция кода Динамическая компиляция кода Динамическая компиляция кода Динамическая компиляция исходного кода Динамическая компиляция кода в приложении Windows Forms Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Воспроизведение звукового файла с помощью 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, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|