C#/SQL Server 2012程序集依赖项错误

C#/SQL Server 2012程序集依赖项错误,c#,sql-server,clr,C#,Sql Server,Clr,我使用C#创建了一个自定义程序集,该程序集具有以下依赖项: Newtonsoft.Json.dll SMDiagnostics.dll System.ServiceModel.Internals.dll System.Runtime.Serialization.dll 然后,此程序集将加载到SQL Server 2012中,由SQL函数执行 当我在本地计算机上运行.NET v4.0的SQL Server 2012 Express上创建程序集时,它运行良好,并且我能够在程序集中执行函数和代码块。尽

我使用C#创建了一个自定义程序集,该程序集具有以下依赖项:

  • Newtonsoft.Json.dll
  • SMDiagnostics.dll
  • System.ServiceModel.Internals.dll
  • System.Runtime.Serialization.dll
  • 然后,此程序集将加载到SQL Server 2012中,由SQL函数执行

    当我在本地计算机上运行.NET v4.0的SQL Server 2012 Express上创建程序集时,它运行良好,并且我能够在程序集中执行函数和代码块。尽管如此,当我将其移动到运行SQL server 2012和.NET v3.5的服务器时,会出现以下错误:

    Msg 6522,16级,状态1,第1行 在执行用户定义的例程或聚合“GetOutagesFunc”期间发生.NET Framework错误: System.IO.FileLoadException:无法加载文件或程序集“System.Runtime.Serialization,Version=4.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089”或其依赖项之一。主机存储中的程序集与GAC中的程序集具有不同的签名。(HRESULT的例外:0x8013100)有关详细信息,请参阅Microsoft知识库文章949080

    自定义程序集及其所有依赖项的安装没有错误,当我比较服务器上所有程序集的版本时,它们与本地计算机上所有程序集的版本匹配

    我想这可能是因为服务器运行的是.NETv3.5,我无法将程序集的目标版本定为高于3.5的版本,所以我将程序集的目标版本定为.NETv3.5,但我仍然存在同样的问题


    非常感谢您的指导。

    我在运行nUnit测试时也遇到了同样的问题。CLR和代码使用4.0.0版本,GAC使用3.0.0版本。测试运行时,GAC和CLR中的程序集版本不同

    我发现了类似的线索。这对你的处境可能有帮助


    我试图将新版本复制到GAC,但复制失败。这可能是由于序列化dll的其他依赖关系造成的。

    也许@LesH感谢您的帮助。我读了这篇文章,我相信我正在经历场景2的症状。为了解决这个问题,我尝试删除所有程序集,并在SQL server上执行CREATEASSEMBLY语句,指向本地计算机上的dll文件,不幸的是,这不起作用。