I found a solution. I generated a key (.pfx) file and signed all projects. I declared all methods that I want to protect as internal and added a
InternalsVisibleTo
attribute to the assembly :
So in my data project, all methods that I want to protect are declared as internal and the assembly info file contains the following line :
[assembly: InternalsVisibleTo("Core, PublicKey=0000.. ..0000")]
For the Core project I did exactly the same. This way all methods can be
protected by marking them
internal
. The assembly in line of order is allowed to access the internal (it can actually call the method even while in design time) but references made to the assembly in the future won't be able to see them because they are not exposed to the big bad world outside.
Victory!