Здравствуйте, matumba, Вы писали:
M>Скачал их последний билд (примерно неделю-две назад), скомпилил пример HelloCodeModel — ровно то, что будет делать компилятор. Выход получился (hello.exe), но он не работает: M>"Unhandled Exception: System.BadImageFormatException: Could not load file or assembly 'hello.exe' or one of its dependencies".
Не знаю. Я качал, компилил — все работало. Дума, что ты что-то не так сделал. Или они багу допустили.
Создай им Исьюс и все выяснится.
Потом HelloCodeModel — это, вроде бы, пример не для CCI Metadata который хотим использовать мы, а пример для CCI AST (более высокоуровневого API, которое, скорее всего для нас не нужно).
M>Закономерный вопрос: а можно ли им пользоваться вообще? Понимаю, что проблема может быть в одном байте, но где гарантия, что таких "неправильных байтов" не разбросано по остальным местам?
Это конечно никто гарантировать не может. Но "нерабочих байтов" Emit-е просто не прилично много. Плюс есть системные ошибки.
M>И попутный вопрос: а много ли вам нужно от CCI? Сгенерировать MSIL можно и руками, а то и вообще *.il исходник скармливать ilasm'у.
Руками — это ты хорошо пошутил. Видил объем этого CCI Metadata? Вот это все придется написать своими руками.
Короче, работы и так море. И взваливать на себя еще одну объемную задачу — это не конструктивно.
Тут вопрос может только ставиться так. CCI Metadata или что-то другое. Если в МС стки решатся и сделают управляемый компилятор C#-а, то возможно можно будет использовать его качестве баэкэнда. Так же можно поглядеть на Mono Cecil. Мои наблюдения показали что CCI Metadata более зрелый продукт.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.