SQLCLR程序集部署失败,因为程序集验证失败



以防别人遇到同样的问题。

错误:SQL72014: .Net SqlClient Data Provider:…创建组装for assembly"装配"。名称"由于程序集失败"程序集。名字的验证失败。检查引用的程序集是否为最新的并且受信任(对于external_access或不安全)可以在数据库。CLR验证程序错误消息(如果有的话)将跟随此消息
[token 0x02000003]类型加载失败。

SQLCLR程序集构建成功,但无法部署。当程序集被常规的。net应用程序(在SQL Server之外)访问时,它将给出一个TypeLoadException:

无法加载类型"type . in"。Assembly'源自Assembly大会。名称,版本=1.0.0.0,文化=中性,PublicKeyToken=null',因为格式无效。

问题与程序集中的用户定义类型(UDT)有关。

罪魁祸首是

System.Runtime.InteropServices.StructLayoutAttribute

当我们使用
定义UDT时[Microsoft.SqlServer.Server.SqlUserDefinedType(Format.Native)]并且UDT是一个类(而不是一个结构),它还需要定义一个[StructLayout(LayoutKind.Sequential)]在班上

问题是我的UDT类是从基类继承的。 StructLayout也必须在基类上定义

最新更新