Писал как-то приложение для распределенных вычислений, у меня сборка, выполняющая атомарную задачу (она реализовывалась как плагин, позволяя, реализовав в сборке интерфейс, выполнять любую задачу), загружалась с клиента-заказчика вычислений на клиенты исполнители вместе с исходными данными задач. Так вот, сборку я передавал просто как массив байтов (просто считывал файл с диска), этот массив был частью информации о задаче (для связи использовался Remoting). На выполняющем клиенте сборка воссоздавалась из этого массива при помощи Assembly.Load .
... << RSDN@Home 1.2.0 alpha rev. 0>>