it becomes a nightmare keeping my game and the editor in sync
The best way to avoid problems is to put your level data code in a project of its own, building an assembly ("library"). The editor and the game will then both use the same code to read/write the data.
I would probably use some form of serialization to store and read back the data, if the data is sets of complex objects. If the data is only "tile used at this square," "entity placed at this square" and "behavior of entity at this square," then you can store three arrays of byte, where the value of the byte is an index into a tile array, an index into an entity array, and an index into a behavior array. You may want to also store the tile array, entity array and behavior array in the actual file, and make it so that the editor can create/configure those arrays.