【问题标题】:CLR stored procedure needs to call .Net AssemblyCLR 存储过程需要调用 .Net 程序集
【发布时间】:2011-09-06 16:07:22
【问题描述】:

由于 SQL Server 2008 的限制,我有一个用 .Net 3.5 编写的 CLR 存储过程

在这个存储过程中,我需要调用一个在 .Net 4.0 程序集中的函数,但是当我添加对它的引用时,我得到了错误

' ',或其依赖项之一需要更高版本的 .Net 框架比项目中指定的...

有没有办法解决这个问题?

我正在调用的程序集是一个外部程序集,因此我无法对其进行任何更改,但我需要从我的 CLR 中调用它吗?有什么想法吗?

【问题讨论】:

    标签: .net


    【解决方案1】:

    根据MSDN Forum Post,CLR 不向前兼容。它在谈论 2.0到4.0的通讯,3.5到4.0还是合适的。

    CLR 也不提供任何直接的 CLR 到 CLR 通信。使用 COM 可能是最好的主意。 另请注意,2.0 程序集可以与 4.0 程序集通信,但它们必须在相同的 CLR 运行时(本例中为 4.0)中运行。程序集本身不受限制,因为 2.0 程序集可以在 4.0 CLR 运行时中运行。 CLR 运行时版本是重要的部分,而不是构建程序集所依据的 CLR。​​

    【讨论】:

    • 我不确定我是否理解这条评论的意思??
    • 这是否意味着不可能?
    • 看起来唯一的方法是如果您的第三方程序集是使用 COM 接口构建的。所以除此之外没有。您可以将基于早期运行时构建的程序集添加到 4.0 项目,但不能将基于 4.0 构建的程序集添加到 3.5 或更早的项目。
    • 你有什么关于COM接口的好资料吗?虽然它是我们想从 CLR 调用的第三方程序集,但我们确实拥有它的完整源代码,因此我们可以对其进行扩展
    • COM 可能是一个相当深奥的主题,我一直只是在我的代码中使用 COM 对象。我没有创造的需要。在 Amazon 上有一些好书,在 MSDN 上有一些不错的文档,在 Stackoverflow 上有一些很好的问题和答案。即stackoverflow.com/search?q=making+.net+assembly+com+visible
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-22
    • 2011-01-20
    • 2011-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多