嵌入式Interop的.NET程序集中的TypeLoadException

时间:2013-04-04 20:33:43

标签: .net com vsto com-interop

我开发了一个具有以下特征的.NET类库:

  • .NET 4.0,任何CPU
  • 从.NET主Interop程序集文件夹中引用adodb.dll
  • 构建时Embed Interop Type设置为true(默认)
  • 公开ADODB.RecordSet供COM消费。

我通过VSTO AddIn将程序集暴露给VBA。它在我的机器上运行正常,但在客户端计算机上,当我尝试访问System.TypeLoadException的{​​{1}}属性时,我的程序集会抛出Fields

RecordSet

异常消息:

public Recordset Test() { Recordset result = new Recordset(); result.CursorLocation = CursorLocationEnum.adUseClient; Fields resultFields = result.Fields; // EXCEPTION THROWN HERE. ... }

失败的客户:Win XP / 32,Win 7/64。没有本地管理员权限。两者都有.NET 4.0


更新 This Post描述了我的问题。接受的答案(后期绑定)对我不起作用,但鲍勃的回答确实如此(不要嵌入Interop)。

一旦我将Could not load type 'ADODB.FieldsToInternalFieldsMarshaler' from assembly 'MyCompany.MyProduct.Interop.Com设置为Embed Interop Types,一切都开始像魔术一样运作。

所以我的问题已经改为“为什么嵌入互操作不起作用?”我认为这是避免客户机问题的最佳做法。

0 个答案:

没有答案