【发布时间】:2016-04-18 19:05:05
【问题描述】:
我在 C# 中构建了一个 SQLCLR 函数,它将反序列化 JSON 并返回一个表。
我遇到的问题是在 SQL Server 2012 中获取正确的程序集。
为了利用 Newtonsoft 的反序列化器,我必须将以下程序集添加到 SQL Server:
System.ServiceModel.Internals.dll
SMDiagnostics.dll
System.Runtime.Serialization.dll
Newtonsoft.Json.dll
这一切都按计划进行,但是当我尝试运行我的函数时,我收到以下错误:
System.IO.FileLoadException:无法加载文件或程序集“System.Runtime.Serialization,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”或其依赖项之一。主机存储中的程序集与 GAC 中的程序集具有不同的签名。 (HRESULT 异常:0x80131050)有关详细信息,请参阅 Microsoft 知识库文章 949080。 ---> System.IO.FileLoadException:无法加载文件或程序集“System.Runtime.Serialization,版本=3.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”或其依赖项之一。主机存储中的程序集与 GAC 中的程序集具有不同的签名。 (HRESULT 异常:0x80131050)有关详细信息,请参阅 Microsoft 知识库文章 949080。
服务器安装了 .NET 4,而我尝试添加的 DLL 来自该服务器。但是 C:\Windows\assembly 中显示的 DLL 是 3.0.0 版。
我使用 Powershell 更新 GAC 中的 DLL,但这只更新位于 C:\Windows\Microsoft.NET\assembly\GAC_MSIL 中的 DLL。
究竟如何在 C:\Windows\assembly(我假设是 SQL Server 与之比较的那个)上获得 GAC 以反映正确的程序集?
非常感谢任何帮助。
【问题讨论】:
-
你有没有想过这个问题?这会很有帮助。
-
是的,我做到了,抱歉一直没有更新帖子。现在会这样做。
标签: .net sql-server sql-server-2012 gac sqlclr