2009-03-25 5 views
2

Я пишу .NET On-the-Fly компилятор для сценариев CLR и хочу реализовать следующую идею: есть файл шаблона с кодом C#, я хочу его прочитать, создать сборку, загрузить ее и усилить источник на лету. Как я могу это сделать?Загрузите сборку и замените источник, можно ли и как?

ответ

3

Вы можете сделать это с помощью CompileAssemblyFromSource. В прошлом я делал что-то похожее, где я расширил некоторые сценарии с помощью статических оболочек классов, чтобы их можно было легко вызвать. Вы можете see it (or steal from it) here.

Для этого просто загрузите свой шаблон, добавьте дополнительные расширения в код и скомпилируйте его одним выстрелом.


Если вы хотите изменить существующую сборку, вам нужно будет использовать что-то вроде Mono.Cecil. Он позволяет загружать и изменять как сборку во время выполнения. Существует статья CodeProject с использованием Reflexil, продукта GPL на основе Cecil, который может помочь вам получить некоторые идеи ...

+0

Спасибо за ссылку, это очень полезно! И вы имеете в виду, что только один способ - изменить исходный код перед компиляцией, а не после? – abatishchev

+0

Нет. Однако вы можете использовать что-то вроде Cecil (http://www.mono-project.com/Cecil) для ввода в вашу сборку. Я обновлю, чтобы включить это. –

Смежные вопросы