Я пишу .NET On-the-Fly компилятор для сценариев CLR и хочу реализовать следующую идею: есть файл шаблона с кодом C#, я хочу его прочитать, создать сборку, загрузить ее и усилить источник на лету. Как я могу это сделать?Загрузите сборку и замените источник, можно ли и как?
2
A
ответ
3
Вы можете сделать это с помощью CompileAssemblyFromSource. В прошлом я делал что-то похожее, где я расширил некоторые сценарии с помощью статических оболочек классов, чтобы их можно было легко вызвать. Вы можете see it (or steal from it) here.
Для этого просто загрузите свой шаблон, добавьте дополнительные расширения в код и скомпилируйте его одним выстрелом.
Если вы хотите изменить существующую сборку, вам нужно будет использовать что-то вроде Mono.Cecil. Он позволяет загружать и изменять как сборку во время выполнения. Существует статья CodeProject с использованием Reflexil, продукта GPL на основе Cecil, который может помочь вам получить некоторые идеи ...
Смежные вопросы
- 1. AngularJS: Загрузите содержимое и замените exitng
- 2. Можно ли переименовать и скопировать сборку?
- 3. Загрузите и замените файлы ресурсов Android
- 4. Загрузите и замените файл в каталоге
- 5. Сопоставьте как можно больше и замените одним
- 6. Загрузите файлы с сервера и замените их как ??? iphone
- 7. Замените источник изображения
- 8. Загрузите сборку и вызовите ее функцию в Wpf
- 9. Загрузите сборку F # в Powershell и создайте рекордное выражение
- 10. Загрузите конкретный источник тега
- 11. Можно ли заставить JIT скомпилировать сборку и получить код asm?
- 12. Прочитайте и загрузите источник страницы как Unicode в Java
- 13. Загрузите изображение, переименуйте его, сделайте миниатюру и замените оригинал. (оптимизация)
- 14. Загрузите новые данные JSON и замените старый в VueJS
- 15. Загрузите только один фрагмент и замените его только
- 16. Замените и замените выходной сигнал
- 17. Можно ли использовать источник данных и соответствующий драйвер, используя ухо?
- 18. Загрузите пакет nuget и его сборку во время выполнения
- 19. подключитесь к teamcity из java и загрузите сборку
- 20. Как отличить сборку VS и сборку csc.exe?
- 21. Загрузите источник Atom Rss Feed
- 22. Включить автоматическую сборку, когда нажата кнопка F5, и источник устарел
- 23. Загрузите сборку во время выполнения, которая ссылается на вызывающую сборку
- 24. Можно ли закрепить переднюю сборку перпендикулярно поверхности?
- 25. Можно ли сохранить динамическую сборку на диск?
- 26. Можно ли остановить сборку мусора .NET?
- 27. Можно ли применить сборку WinSCP к java?
- 28. Можно ли вставить файл ttinclude в сборку?
- 29. Ссылки на сборку и сборку Interwoven Team
- 30. Загрузите сборку строгого имени из определенного пути?
Спасибо за ссылку, это очень полезно! И вы имеете в виду, что только один способ - изменить исходный код перед компиляцией, а не после? – abatishchev
Нет. Однако вы можете использовать что-то вроде Cecil (http://www.mono-project.com/Cecil) для ввода в вашу сборку. Я обновлю, чтобы включить это. –