You can also make all of this go away by avoiding UDTs and using simple value classes instead. While this doesn't substitute for all UDT usage it works quite well for the majority of cases. If necessary you can add code to persist them as text data (XML, JSON, INI-like key/value lists) or PropertyBags or whatever.

This can be much more useful because you can also extend them by adding code as property, method, and event definitions.

No DLL, no TLB, no anything extra required.