very odd, it indeed happens with this project. I can also repro it with a project of our own using the designer, but the project I use is a copy of the one we use for our unit tests which code is generated using the cligenerator and it is OK there.
So I wondered, if I re-generate it onto the same code again, and it is then OK again. So the initial code in an empty folder indeed contains the empty lines, every subsequential generations onto the same code base are OK (no empty lines)
This likely has to do with the regexp we use to find the regions. Initially the regions are empty, so the code in the template is emitted as-is. Next time, it finds the regions with the regexp (even if they're empty), so start/end marker plus contents are replacing the keywords for the region in the template. I think this makes a crlf be swallowed as such so there's 1 crlf less in the output.
I never noticed this as I looked at the code generated by the unit test project generator as that contains many situations (inheritance, m:n, 1:1 etc.) and that code is never 'new'.
It's clear in this output:
public partial class CustomerEntity : CommonEntityBase
// __LLBLGENPRO_USER_CODE_REGION_START AdditionalInterfaces
// __LLBLGENPRO_USER_CODE_REGION_END
<TAB>
{
second time:
public partial class CustomerEntity : CommonEntityBase
// __LLBLGENPRO_USER_CODE_REGION_START AdditionalInterfaces
// __LLBLGENPRO_USER_CODE_REGION_END <TAB>
{
so the <TAB> is still there (causing the empty line) but the CRLF after the marker isn't there, so the line moves up.
We'll see if the crlf can be added to the regexp, to see what that ends up with. Will be for v5.4 (so we can clean up the templates some more and get rid of the empty lines, sorry )