【问题标题】:CREATE ASSEMBLY for assembly 'dotnetpiper.CLR' failed because assembly 'microsoft.visualbasic.activities.compiler'为程序集“dotnetpiper.CLR”创建程序集失败,因为程序集“microsoft.visualbasic.activities.compiler”
【发布时间】:2016-12-29 16:55:12
【问题描述】:

我在 SQL Server 中使用CREATE ASSEMBLY 命令时遇到问题,错误消息如下:

消息 6544,第 16 级,状态 1,第 19 行
为程序集“dotnetpiper.CLR”创建程序集失败,因为程序集“microsoft.visualbasic.activities.compiler”格式错误或不是纯 .NET 程序集。
无法验证的 PE 标头/本机存根

我正在使用这个查询:

CREATE ASSEMBLY dotnetpiper
from 'D:\My\dotnetpiper.CLR.dll'
WITH PERMISSION_SET = UNSAFE

请告诉我我所犯的任何错误。到目前为止,我还没有发现任何有用的信息。

【问题讨论】:

    标签: c# .net sql-server .net-assembly sqlclr


    【解决方案1】:

    SQLCLR 程序集中不允许使用混合模式程序集;只允许使用纯 MSIL 程序集。

    我在以下 Stack Overflow 答案中更全面地记录了这个特定问题:

    SQL Server: "CREATE ASSEMBLY for assembly 'Test' failed because assembly 'Test' is malformed or not a pure .NET assembly."

    以下 Stack Overflow 问题涵盖了相同的问题,并且还显示了相同的源 DLL -- microsoft.visualbasic.activities.compiler -- 是原因:

    Register CLR function (WCF based) in SQL Server 2012

    您必须找到一种方法让 dotnetpiper 工作而不参考 microsoft.visualbasic.activities.compiler,或者您必须找到一种方法来使用 dotnetpiper。

    一种可能性是从 dotnetpiper 通过控制台应用程序(几乎没有 SQLCLR 环境受到限制)获得您需要的基本功能,然后通过每个人最喜欢的 @987654323 执行控制台应用程序@。

    【讨论】:

    • 感谢 srutzky 的快速回复,虽然我们尝试了上述链接但没有成功。除此之外,我们正在使用 clsss 库项目创建 .dll 并使用不安全的 Create Assembly 将其引用到 SQL 中,也尝试了多种方法,但仍然在挣扎。
    • @SachinKalia 我不确定您所说的“我们已经尝试了上述链接”是什么意思。除了我在这里提到的试图找到解决 microsoft.visualbasic.activities.compiler 的方法或创建控制台应用程序之外,没有什么可以尝试的。但是,如果它引用了 microsoft.visualbasic.activities.compiler,则您无法加载您的程序集,因为 那个 库无法加载到 SQL Server 中,因为它是一个混合 -模式 DLL。
    • 谢谢先生,我们已经尝试了上面的链接意味着我们已经阅读并实施了那里给出的建议。我们有一个类库,我们试图将其添加为程序集。我们能否将我们的 dll 设为纯模式 dll,以便我们可以加载它。
    • @SachinKalia 您的 DLL,只要它是 C# 而没有 VC++,就不是问题。 microsoft.visualbasic.activities.compiler DLL 是问题所在。该 DLL microsoft.visualbasic.activities.compiler 在 SQLCLR 中不可用,因此 CREATE ASSEMBLY 命令正在尝试导入它,因为您的 dotnetpiper.CLR引用了它> 动态链接库。但是 microsoft.visualbasic.activities.compiler DLL 无法加载,这意味着您的 dotnetpiper.CLR DLL 也无法加载。
    • 非常感谢您对 srutzky 的所有帮助。我将来可能需要你而不是一定会追你:)
    猜你喜欢
    • 1970-01-01
    • 2010-11-11
    • 1970-01-01
    • 2010-11-04
    • 2012-03-17
    • 1970-01-01
    • 2012-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多