我正在尝试从特定的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框架的一部分,没有外部类。
答案 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
可以引用其他系统程序集,但必须在数据库中明确注册它们。
无论哪个版本的SQL Server,CREATE ASSEMBLY只允许注册纯.NET程序集。 SQL Server始终要求使用CREATE ASSEMBLY加载到SQL Server数据库中的程序集仅包含MSIL指令(纯程序集)。如果要注册的程序集是混合程序集,则CREATE ASSEMBLY将引发上述错误。
我希望这会有所帮助。