Where I work my colleagues have had a habit of including the Microsoft.SqlServer.Types.dll into every new Windows application we start. After a while including that DLL would cause us problems when our users tried to install any of our apps using ClickOnce. The reason for that is Microsoft.SqlServer.Types.dll needs to be installed in the GAC, which ClickOnce won't do. (Here's one link describing this issue. You can find others by searching for Microsoft.SqlServer.Types.dll and ClickOnce.)
However, my colleagues are adament about having that DLL in our apps. I looked up what Microsoft.SqlServer.Types.dll is for and discovered that it is for spatial data types that are in SQL Server but are not native to C# (or presumably VB.NET). And we don't have any data types that have native SQL Server spatial data types in them. So, I am still not sure why my colleagues insist upon including a DLL that does nothing, at least as far as I know. Nevertheless, the insist that it must be included.
So, I'd like to ask what else does Microsoft.SqlServer.Types.dll do, besides work with SQL Server's native spatial data types? Here's a line of code that we're having problems with, because Microsoft.SqlServer.Types.dll is no longer a part of the project (so that users can use ClickOnce to install the application):
There must be other, incidental things, that call does, besides needing to be called before doing any spatial data type actions from SQL Server. What else does it do? (This call is in a method which helps to generate a PDF file for the user.)