Это потому, что вам не нужна DLL. Перечисление enum компилируется в его числовое значение, в IL нет ссылки на тип. Например, это:
public enum Numbers { Zero, One, Two, Three }
static void Main(string[] args) {
var n = Numbers.One;
}
компилируется в это:
IL_0001: ldc.i4.1 ; NOTE: constant 1 being used here
IL_0002: stloc.0
Компилятор автоматически отфильтровывает директивы using для сборок, которые фактически не используются.
Видимо, вы нашли в этом морщину, очень важно, чтобы вы добавили подобные детали в свой вопрос. Да, двоичная сериализация поместит ссылку на тип в сериализованные данные, что компилятор не сможет увидеть. Единственный обходной путь для этого - убедиться, что сборка скопирована в каталог сборки. Проект + Добавить существующий элемент, перейдите к DLL. Выберите его в окне обозревателя решений, установите для свойства «Копировать в выходной каталог» значение «Копировать, если новее».