Управляемые сборки также могут быть EXE-файлами. И ваш код просто получает файлы с расширением «dll». Ntive DLL, которые не являются сборками, также будут возвращены.
В тех немногих случаях, когда мне нужно было это сделать, я просто получал список всех файлов (аналогично тому, что вы сделали), а затем использовал Assemby.LoadFrom, чтобы попытаться загрузить каждый, trappig исключения в случае родные. Типичным исключением является ReflectionTypeLoadException, хотя вы также можете получить его, если ссылка не может быть разрешена.