ADODBC不能从程序集中加载“ADODB.FieldsToInternalFieldsMarshaler”类型

时间:2011-04-14 16:14:36

标签: activex adodb

我正在尝试读取这样的ADOBD.Recordset对象(我的第一次,所以原谅我的“noobness”:D):

Presentation.Category categorySvc = new Presentation.Category();
ADODB.Recordset categories = categorySvc.ListAll("BE", "DUE", "EN", 128);
foreach (var category in categories.Fields) // here is where I get the exception
{
   // ...
}

ListAll调用工作正常 - 我得到Recordset一些数据,我通过对对象执行QuickWatch确认。但是当代码到达categories.Fields时,我得到以下异常:

  

无法加载类型   'ADODB.FieldsToInternalFieldsMarshaler'   从汇编'TestCOMCalls,   版本= 1.0.0.0,文化=中立,   公钥=空”。

我用Google搜索了这个错误(或者只是通过'ADODB.FieldsToInternalFieldsMarshaler'找不到任何可以帮我解决问题的内容。)

我想知道,我错过了一个参考?除了正常的参考文献,我已经将这个添加到我的项目中:

  

ADODB   Microsoft ActiveX数据对象2.5库   C:\ Windows \组件\ GAC \ ADODB \ 7.0.3300.0__b03f5f7f11d50a3a \ ADODB.dll

就像我说的那样,我之前从未这样做过,但是通过谷歌搜索,我能够看到一些人这样做(foreach on the object.Fields),它似乎适用于他们。

非常感谢任何帮助或指示:)

谢谢!

6 个答案:

答案 0 :(得分:35)

它位于各个引用上 - 而不是项目属性中。在解决方案资源管理器窗口中,打开“参考”(在项目下),然后单击相关参考。属性窗口将有一个Embed Interop Types选项(对于每个引用)。

在Visual BAsic 2010中:

关闭嵌入互操作类型:

项目菜单>显示所有文件,解决方案资源管理器:>参考文献:> ADODB>嵌入Interof类型= False。 Microsoft.Office.Interop.Access>嵌入Interof类型= False

您现在可以发布,并且ADODB也会出现在:项目菜单>项目属性...发布TAB>申请文件

答案 1 :(得分:7)

  
    

看看我在这个问题上找到了什么。我引用了你的,但仍然无法让ADODB工作。

  

小小的补充:

SolutionExplorer - >查看所有文件。 对于ADODB: - 嵌入...... =假; - 复制Local = True。

答案 2 :(得分:7)

解决:

解决方案资源管理器 - >显示所有文件(菜单项) - >参与 - > Adodb - >(属性) - >嵌入互操作类型 - >假

答案 3 :(得分:4)

在VS 2013中遇到了同样的问题,解决方法是你去 参考并选择ADODB,在您将看到的属性上看到Embed Interof types = True然后将其更改为false。

答案 4 :(得分:1)

好的,我想到了如何做到这一点:

Presentation.Category categorySvc = new Presentation.Category();
ADODB.Recordset categories = categorySvc.ListAll("BE", "DUE", "EN", 128);
categories.MoveFirst();
while(!categories.EOF)
{
    var fields = ((dynamic)categories).Fields;
    for (int i = 0; i < fields.Count; i++)
    {
        var field = fields[i];
        var name = field.Name;
        var value = field.Value;
        // ...
    }
    categories.MoveNext();
}

答案 5 :(得分:0)

我在清除临时文件( VS 2017 )时遇到此问题。您需要更改此异常的解决方案 Solution Explorer > References > adodb > "Then Right click and choose properties" > Embed Interop Types, set "True" to "False"