The Easy Save 3 Game Objects will be created because you're saving and loading a Component (Building), but the GameObject which that Component belongs to no longer exists. Therefore Easy Save has to create a GameObject, because a Component cannot exist without a GameObject to attach it to.
Because of this, you should save and load the GameObjects containing the building scripts first. Once you've right-clicked your prefab and selected "Enable Easy Save for Prefab", you can save the GameObjects containing your buildings using something along the lines of:
// Put buildings into an array. var buildingGameObjects = new List<GameObject>(); foreach(var building in buildings) buildingGameObjects.Add(building.Value.gameObject); ES3.Save<GameObject>("buildingGameObjects", buildingGameObjects);And then when you load, before loading your Dictionary, load the GameObjects:
ES3.Load<GameObject>("buildingGameObjects");Regarding the ArgumentException: Only types of UnityEngine.Component can be written with this method, but argument given is type of Farm error you're getting, this should be fixed in the latest version. If you PM me your invoice number I'll send you over the latest version incase the Asset Store isn't distributing it.
All the best,
Joel