【问题标题】:Asssembly.LoadFrom fails when called via Excel 2007通过 Excel 2007 调用 Assembly.LoadFrom 失败
【发布时间】:2011-06-29 19:30:55
【问题描述】:

我有一个 .NET 4.0 类,它使用 Assembly.LoadFrom 加载 .NET 3.5 混合模式程序集。当从 .NET 4.0 应用程序(在配置文件中指定 useLegacyV2RuntimeActivationPolicy="true")调用此类时,一切正常。

但是,这个类也是 COM 可见的,当我从 Excel 2007 调用它时(再次,Excel.exe.config 指定 useLegacyV2RuntimeActivationPolicy="true")我得到一个 FileLoadException:

无法加载文件或程序集“Foo...”或其依赖项之一。无法加载运行时。 (HRESULT 异常:0x80131700)

内部异常是 System.Runtime.InteropServices.COMException:无法加载运行时。 (HRESULT 异常:0x80131700)

我确实不会在从 Excel 2003 或 Excel 2010 或 vbscript 调用时遇到此问题。有人可以解释发生了什么以及如何解决吗?

【问题讨论】:

    标签: excel com .net-4.0 excel-2007 com-interop


    【解决方案1】:

    我从 Microsoft 发现这是 Excel 2007 的一个已知问题。该问题已在 Excel 2010 中解决,而该问题将不会在 Excel 2007 中解决。

    解决方法是在使用 .NET 4.0 类之前强制 Excel 使用 COM 公开的 .NET 2.0 类型。为此,我添加了对 mscorlib.tlb 的 .NET 2.0 版本的引用,然后在调用 .NET 4.0 类之前添加了以下 VBA 代码:

    Dim o as mscorlib.Object
    Set o = New mscorlib.Object
    

    希望这对偶然发现这个晦涩问题的人有用!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-20
      相关资源
      最近更新 更多