Здесь нет «метаданных» - типы Enum по-прежнему являются типами. Если он уже существует в отдельной сборке, единственная причина, по которой вы захотите воссоздать его в другом проекте, - это если по какой-то конкретной причине вы не можете ссылаться на исходную сборку.
Если у вас есть две (идентичные или почти идентичные) версии одного и того же типа - любого типа - в любом решении, где «решение» включает в себя ссылочные сборки, то вы рискуете столкнуться с конфликтом или, по крайней мере, путаницей, для никакой ощутимой пользы, которую я вижу.
Если тип еще не существует, и вы спрашиваете, где он должен быть создан ... обычно тип живет там, где начинаются его зависимости. Если он просто будет сидеть во внешней сборке и ничего не делать, то его там не должно быть. С другой стороны, если другие классы во внешней сборке зависят от него, то он определенно должен входить туда или в одну из зависимостей внешней сборки, иначе вы, вероятно, в конечном итоге получите уродливую циклическую зависимость пространства имен, которую вы будете необходимо устранить (и это может быть очень трудно сделать позже в игре).
Итак, в основном: не определяйте свои собственные типы, идентичные уже существующему типу, если только у вас нет очень веской причины, и не определяйте какой-либо тип в проекте / сборке, где вы на самом деле не намереваетесь используйте это.