Вы не должны писать расширение оболочки в .net..net требует загрузки среды выполнения в каждый процесс, загружающий расширение оболочки.И это много, так как, например, диалоги открытия / закрытия файлов используют оболочку.
Это приводит к проблемам с версиями, поскольку вы не можете загрузить .net 1 и 2 в одном процессе.И это также тратит впустую ресурсы.
Обходной путь - написание расширения оболочки в собственном коде и использование вспомогательного процесса, написанного на .net.
См. Блог Раймонда Чена: Не писать в-обработка расширений оболочки в управляемом коде