I’ve wrote a few .NET SQL CLR Routines in C# in the past. This allows you to call .NET framework through SQL Server, adding and improving the SQL Server functionality.
Occasionally Microsoft push out updates which break this. This can result in error messages such as:
Can't run XXXX(), A .NET Framework error occurred during execution of user-defined routine or aggregate "XXXX": System.IO.FileLoadException: Could not load file or assembly 'System.IO.Compression, Version=184.108.40.206, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. Assembly in host store has a different signature than assembly in GAC. (Exception from HRESULT: 0x80131050) See Microsoft Knowledge Base article 949080 for more information. System.IO.FileLoadException: at XXXX(SqlString XXXX, SqlString XXXX)
The solution is to refresh the loaded assembly into SQL. Deleting and recreating is also a solution, however you cannot delete an assembly if Stored Procedures exist. This is done by running a command such as:
ALTER ASSEMBLY [System.IO.Compression] FROM 'C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System.IO.Compression.dll'