由于引用 .net 程序集,无法创建程序集

本文关键字:程序集 创建 net 于引用 引用 | 更新日期: 2023-09-27 18:31:16

我正在尝试从特定的dll创建一个程序集。我执行的命令是

创建程序集"xx.xx.blobviewer" 'D:''xx''xx''xx''BlobSniffer''BlobSniffer.dll' WITH PERMISSION_SET = unsafe

我收到的响应消息是:

程序集"Blob嗅探器"引用程序集 'system.runtime.serialization, version=4.0.0.0, culture=neutral, 公钥令牌=B77A5C561934E089.',当前 数据库。SQL Server 试图找到并自动加载 从引用程序集的同一位置引用程序集 来自,但该操作失败(原因:2(系统无法 查找指定的文件。请将引用的程序集加载到 当前数据库,然后重试请求。

我尝试将请求的 .net dll-s 复制到 BlobSniffer 文件夹,但在复制所有引用的程序集后,我得到这个:

为程序集"Blob 嗅探器"创建程序集失败,因为程序集 "microsoft.visualbasic.activities.compiler"格式不正确或不是纯格式 .NET 程序集。无法验证的 PE 标头/本机存根。

第一个问题,为什么我什至需要复制 .net 程序集,它们不应该自动检索吗?

第二个问题,程序集被标记为格式不正确有什么问题?程序集也是 .net 框架的一部分,没有外部类。

由于引用 .net 程序集,无法创建程序集

看看这里:

http://msdn.microsoft.com/en-us/library/ms189524.aspx

它引用的系统程序集集是 SQL Server 中以下受支持的程序集之一:

  • Microsoft.视觉基础.dll
  • 姆斯科利布.dll
  • 系统数据.dll
  • 系统.dll
  • 系统.Xml.dll
  • Microsoft.视觉.dll
  • 海关编组.dll
  • 系统安全.dll
  • 系统.网络.服务.dll
  • System.Data.SqlXml.dll
  • 系统核心.dll
  • System.Xml.Linq.dll

可以引用其他系统程序集,但必须在数据库中显式注册这些程序集。

http://blogs.msdn.com/b/psssql/archive/2013/02/23/unable-to-register-net-framework-assembly-not-in-the-supported-list.aspx

无论哪个版本的 SQL Server,CREATE ASSEMBLY 都只允许注册纯 .NET 程序集。 SQL Server 始终要求使用 CREATE ASSEMBLY 将程序集加载到 SQL Server 数据库中的程序集仅包含 MSIL 指令(纯程序集)。 如果要注册的程序集是混合程序集,则 CREATE ASSEMBLY 将引发上述错误。

我希望这有所帮助。