SQLCLR Funktion und System.Runtime.Serialization In GAC

Ich habe eine SQLCLR-Funktion in C # erstellt, die JSON deserialisiert und eine Tabelle zurückgibt.

Das Problem besteht darin, die richtigen Assemblys in SQL Server 2012 abzurufen.

Um den Deserializer von Newtonsoft nutzen zu können, musste ich die folgenden Assemblys zu SQL Server hinzufügen:

System.ServiceModel.Internals.dll
SMDiagnostics.dll
System.Runtime.Serialization.dll
Newtonsoft.Json.dll

Dies ist alles wie geplant verlaufen, aber wenn ich versuche, meine Funktion auszuführen, wird der folgende Fehler angezeigt:

System.IO.FileLoadException: Datei oder Assembly 'System.Runtime.Serialization, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089' oder eine ihrer Abhängigkeiten konnte nicht geladen werden. Assembly im Hostspeicher hat eine andere Signatur als Assembly im GAC. (Ausnahme von HRESULT: 0x80131050) Weitere Informationen finden Sie im Microsoft Knowledge Base-Artikel 949080. ---> System.IO.FileLoadException: Datei oder Assembly 'System.Runtime.Serialization, Version = 3.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089' oder eine ihrer Abhängigkeiten konnte nicht geladen werden. Assembly im Hostspeicher hat eine andere Signatur als Assembly im GAC. (Ausnahme von HRESULT: 0x80131050) Weitere Informationen finden Sie im Microsoft Knowledge Base-Artikel 949080.

Auf dem Server ist .NET 4 installiert, und die DLL, die ich hinzufügen wollte, stammt von diesem Server. Die in C: \ Windows \ Assembly angezeigte DLL ist jedoch Version 3.0.0.

Ich habe Powershell verwendet, um die DLL im GAC zu aktualisieren. Dabei wird jedoch nur die DLL aktualisiert, die sich in C: \ Windows \ Microsoft.NET \ assembly \ GAC_MSIL befindet.

Wie auf der Erde erhalte ich den GAC unter C: \ Windows \ assembly (von dem ich annehme, dass es derjenige ist, mit dem SQL Server ihn vergleicht), um die richtige Assembly wiederzugeben?

Jede Hilfe wird sehr geschätzt.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage