Я уверен, что они не производят один и тот же IL из одного и того же исходного кода.Даже разные версии компилятора MS C # этого не делают.
Оптимизатор будет работать по-другому и создавать немного другой код.
Я ожидаю больших различий в реализации сложных функций, таких как итераторы, локальныепеременная, захваченная для lamdas, ...
Затем существуют произвольные имена, сгенерированные компилятором, например для анонимных типов.Нет причин, по которым они должны использовать для них одну и ту же схему именования.
Я не удивлюсь, если будут какие-то метаданные сборки, содержащие имя и версию вашего компилятора.