如果其他人遇到此问题。
错误:SQL72014:.Net SqlClient数据提供程序:... CREATE ASSEMBLY 程序集'Assembly.Name'失败,因为程序集'Assembly.Name' 验证失败。检查引用的程序集是否是最新的 和信任(对于external_access或不安全)来执行 数据库。 CLR Verifier错误消息(如果有)将遵循此消息
[token 0x02000003]类型加载失败。
SQLCLR程序集已成功构建但无法部署。当常规.NET应用程序(在SQL Server之外)访问程序集时,它将提供TypeLoadException
:
无法从程序集中加载“Type.In.Assembly”类型 'Assembly.Name,Version = 1.0.0.0,Culture = neutral, PublicKeyToken = null'因为格式无效。
问题与程序集中的用户定义类型(UDT)有关。
答案 0 :(得分:2)
罪魁祸首是
System.Runtime.InteropServices.StructLayoutAttribute
当我们使用
定义UDT时
[Microsoft.SqlServer.Server.SqlUserDefinedType(Format.Native)]
并且UDT是一个类(而不是结构),它还需要定义一个
课上[StructLayout(LayoutKind.Sequential)]
。
问题是我的UDT类是从基类继承的。 StructLayout
也必须在基类上定义。