jacob wrote:
I kind of understand your view.
But giving that the current solution costs some hours 2-4 times a month i'll try to persuade you a bit.
How about this: you automate the generation of code, compilation of the generated code and the compilation of the depending projects? You can generate code on the command line with the cligenerator we include in the installer, compiling on the command line can be done with msbuild or dotnet.exe, packaging the packages can be done too and setting up the local nuget source for the packages just built will make sure the depending assemblies are rebuilt as well.
Personally I would be happy with a solution where we need a rule saying.
If Column or Table is removed. Update/Recompile everything.
As in everything new should be added last in the list.
For hard-coded values
We don't use the int values of the enums today. If the numbers are 5 or 4567 doesn't matter to us. (oh, Maybe this will be visible in the designer interface?)
The generated code will become a mess over time. The only thing that helps is hardcoded enum values, the other things won't: as removing a value from an enum will change all other values unless the value is kept, e.g. 'reserved1' etc. which is silly. Hardcoded values are an, albeit lame, option to solve this somehow, but a better way is to automate the builds.
You can even trigger this from within the designer with a small plugin you bind to a designer event (which can be done inside the designer with the UI), so you kick off the script that starts the builds when you e.g. save the project.
Here we have a script that automates the generation of all test code, builds the runtime libs, builds the test projects and runs the tests. Takes almost no code, just a few lines in a cmd file (or ps if you prefer).