Недавнее упоминание PostSharp напомнило мне об этом:Какие инструменты выполняют посткомпиляционную модификацию IL?
В прошлом году, когда я работал, мы думали использовать PostSharp для ввода инструментов в наш код. Это было в среде Team Team Server Build/Continuous Integration.
Думая об этом, я почувствовал, как работает PostSharp - он редактирует IL, который генерируется компиляторами. Меня это немного беспокоило.
Я не был так обеспокоен, что PostSharp не выполнил свою работу правильно; Меня волновало то, что я впервые услышал о таком инструменте. Я был обеспокоен тем, что другие инструменты могут не учитывать это.
Действительно, поскольку мы продвигались вперед, у нас возникли некоторые проблемы, связанные с тем, что PostSharp путался о том, в какой папке находился оригинальный ИЛ. Это нарушало наши сборки. По-видимому, это связано с конфликтом с целью MSBUILD, которая решает ссылки на проекты. Конфликт, по-видимому, связан с тем, что PostSharp использует временную директорию для хранения немодифицированных версий IL.
Во всяком случае, у меня не было StackOverflow, чтобы ссылаться на него тогда! Теперь, когда я это сделаю, я хотел бы спросить вас всех, если вы знаете какие-либо другие инструменты, которые редактируют IL как часть процесса сборки; или принимает ли Microsoft что-то инструмент во внимание в Visual Studio, MSBUILD, Team Build и т.д.
Update: Спасибо за ответы.
Суть в том, что, по крайней мере, с VS 2010, Microsoft действительно должен знать, что такого рода вещи могут случиться. Поэтому, если в этой области есть проблемы в VS2010, Microsoft может поделиться виной.
Существует надстройка для отражатель называется РЕФЛЕКСИЛ (http://sebastien.lebreton.free.fr/reflexil/), который основан на Mono.Cecil. –