My team have build a devtools package, which consists of code files (many of which are monobehaviours, many arent), prefabs, resources, other assets, etc. We want to be able to ship this as a package that can be imported into our customer's projects, where the code comes in the form of just DLLs, rather than raw .cs files.
I know the Library folder contains pre-compiled DLLs for each of my assemblies. When I want to ship the package, I'd ideally like to be able to just delete all my source files and assemblies, and replace them with their corresponding DLLs.
The problem with this is, once I do this, any prefabs that had mono behaviours from the deleted DLL break, since the prefab is trying to reference the raw .cs file version of the monobehaviour, rather than the one from the DLL. Now, I can still attach the DLL version of the monobehaviour to my gameobject (it shows up with a slightly different icon in the inspector, telling me its coming from the DLL rather than a raw file), but this means I have to reconfigure that component's inspector, to match the config I was using for the raw .cs version of the monobehaviour. In fact, I'd have to trawl through all of my prefabs, fix the monobehaviour references, and redo all the script config, every single time I want to do a new release.
For a small project this might be doable, but we're building a devtools package that supplies its own hot-swappable VR/2D player, each with its own movement and interaction systems, along with buttons, levers, grabbables, all with network tie-in so its all multiplayer, file systems, voice chat, UIs, etc etc. All too big in scope to feasibly be able to fix everything manually for each release....