Quello che stai tentando di fare non è supportato dall'host CLR di SQL Server. Il CLR all'interno di SQL Server è fortemente limitato per impedire la destabilizzazione di SQL Server poiché funziona in modo diverso rispetto alle app in esecuzione nel sistema operativo. Quindi, esiste un set molto limitato di DLL supportate (ovvero verificate per funzionare e garantite per continuare a funzionare negli aggiornamenti a .NET). WindowsBase non è uno di questi, quindi dovresti caricarlo manualmente come UNSAFE
in SQL Server. Ma questo ti lascia con il problema in cui ti sei imbattuto nella versione nella modifica GAC principale (le DLL comuni tra GAC e l'host CLR di SQL Server devono essere la stessa versione) o peggio, se la DLL diventa "mista" (sia C++ non gestito che codice gestito) e non è più "puro". In tal caso la nuova versione non verrà caricata e la vecchia versione riceve l'errore "versione errata", quindi hai del lavoro da fare.
Per informazioni più dettagliate, vedere i seguenti articoli/documentazione:
- SQL Server 2005 supportato .NET Framework Biblioteche
- Librerie .NET Framework supportate da SQL Server 2008/2008 R2/2012/2014
- Politica di supporto per assembly .NET Framework non testati nell'ambiente ospitato da CLR di SQL Server
- Messaggio di errore quando si esegue una routine CLR o si utilizza un assembly in SQL Server:"L'assembly nell'archivio host ha una firma diversa dall'assembly in GAC. (Eccezione da HRESULT:0x80131050)"
Quel set di collegamenti è preso dalla sezione "Lettura aggiuntiva" di un articolo che ho scritto:Scala per SQLCLR livello 5:sviluppo (usando .NET in SQL Server) .
Per ulteriori informazioni sull'utilizzo di SQLCLR in generale, visitare il mio sito:SQLCLR Info