I'm confused as to why you'd want to use a custom .resx file when you can use the Localization module. I understand the objects aren't serialized but why do you need them to be? The keys are content, use the staging module to move them from one environment to the next, CI shouldn't be needed for that.
Straight from the documentation:
When loading resource strings, the system uses the following priority:
- database (Localization application) – highest priority
- site specific resx files
- resx files of custom modules
- custom.resx
- cms.resx
If there are duplicate strings with the same key in all five sources, the system uses the one stored in the database.
To change the priorities, you can add the following key to your web.config:
<add key="CMSUseSQLResourceManagerAsPrimary" value="false" />
When this key is added, the priorities are as follows:
- site specific resx files
- resx files of custom modules
- custom.resx
- cms.resx
- database