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

时间:2014-11-21 09:11:30

标签: c# .net sql-server clr

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

  

创建大会" xx.xx.blobviewer"从   ' d:\ XX \ XX \ XX \ BlobSniffer \ BlobSniffer.dll' WITH PERMISSION_SET =不安全

我收到的回复信息是:

  

Assembly' BlobSniffer'参考装配   ' system.runtime.serialization,version = 4.0.0.0,culture = neutral,   publickeytoken = b77a5c561934e089。',当前没有   数据库。 SQL Server尝试定位并自动加载   从引用程序集的相同位置引用程序集   来自,但该操作失败(原因:2(系统不能   找到指定的文件。))。请将引用的程序集加载到   当前数据库并重试您的请求。

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

  

为汇编创建装配' BlobSniffer'失败,因为集会   ' microsoft.visualbasic.activities.compiler'是畸形还是不纯洁   .NET程序集。无法验证的PE标头/本机存根。

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

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

1 个答案:

答案 0 :(得分:4)

看看这里:

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

  

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

     
      
  • Microsoft.VisualBasic.dll中
  •   
  • 的Mscorlib.dll
  •   
  • System.Data.dll中
  •   
  • System.dll中
  •   
  • system.xml.dll的
  •   
  • Microsoft.Visualc.dll
  •   
  • Custommarshallers.dll
  •   
  • System.Security.dll
  •   
  • System.Web.Services.dll
  •   
  • System.Data.SqlXml.dll
  •   
  • System.Core.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将引发上述错误。

我希望这会有所帮助。