If your executable does not make any call to the the DLL how will it get the data that the DLL contains? Ultimately your executable will have to get the data through some method or property on a class in your DLL. In any case you have a few options.
Static and static constructors i guess is not a solution to this problem,cos both requires a call to be originated from the exe.
I'm not aware of this limitation. I'm currently using static constructors in DLLs without any problem. Perhaps there's something I missed from your description.