程序集“ System.Threading.Channels”引用了程序集“ system.threading.tasks.extensions,v”,该程序在当前数据库中不存在

问题描述

我正在尝试将DLL添加到SQL Server:

CREATE ASSEMBLY ClassLibrary1
AUTHORIZATION dbo
FROM 'C:\Debug\ClassLibrary1.dll'
WITH PERMISSION_SET = UNSAFE
GO

您可以在这里看到我的DLLs

enter image description here

enter image description here

但是我得到这个错误:

程序集'System.Threading.Channels'引用程序集'system.threading.tasks.extensions,版本= 4.2.0.0,区域性=中性,publickeytoken = cc7b13ffcd2ddd51。”,当前数据库中不存在。 SQL Server试图从引用程序集所在的位置查找并自动加载引用程序集,但该操作失败(原因:版本,区域性或公钥不匹配)。请将引用的程序集加载到当前数据库中,然后重试您的请求。

为什么所有引用的DLL都可用时出现此错误?

解决方法

嗯,很有趣-您创建扩展名dll的程序集的方式应该已经自动创建。

事物的结合:

  • 我假设您已将所有dll手动复制到目录中。如果 因此请确保dll的版本正确,即 dll使用的扩展版本是您拥有的版本 目录。
  • 也可能是无法将扩展名创建为 SQL中的汇编,因为不是所有的clr dll都被允许。尝试创建 手动扩展dll,然后添加频道dll。

有些原因很难将某些dll部署到数据库中-因此,也许要问自己是否可以从db之外完成对dll的处理。每当我看到dll引用System.Threading和System.Memory时,我都会感到担心。

哦,我明白了您想做什么-您想调用Rabbit,并且我假设您正在使用最新的Rabbit客户端dll之一。我有一个模糊的回忆,以后的dll无法部署到SQL。实际上,我早在2017年就写过一篇有关如何执行此操作的博客文章。Have a look at the post,看它是否对您有帮助。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...