Ah yes, it logs the exception as an error in the log, my bad. In any case, the location is pretty easy to track down with that error message.
The thing is: the SQL Server driver doesn't reference any SQLClient assembly nor Microsoft sql server assembly. What we do is this (You can check the source of the driver in the Sourcecode archive which is available on the website under My Account -> v5.3 -> Extras):
In SqlServerCatalogRetriever, we fetch all UDT using the query SELECT * FROM sys.assembly_types. This gives a resultset with a column 'assembly_qualified_name'. We then try to instantiate the UDT type, using
udt.TypeInstance = Type.GetType(udt.FullAssemblyName);
where udt.FullAssemblyName is the value from the assembly_qualified_name column.
If I run this query on AdventureWorks in a SQL Server 2016 instance, I get 3 types back and they're all defined like:
Microsoft.SqlServer.Types.SqlHierarchyId, Microsoft.SqlServer.Types, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91
i.o.w.: in v11 of the assembly. This is really odd, as indeed it smells like this is artificial, and not the real type version.
There's not much we can do however, this is the type we get back and we can't know if that type version is fake or not.
So you can overcome this using either an assemblyredirect in llblgenpro.exe.config or adding v11 to the GAC. (or ignore it, if you don't care about the UDTs of course
).