ADODBC不会从程序集中加载类型\'ADODB.FieldsToInternalFieldsMarshaler\'

| 我正在尝试读取这样的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可以确认这一点。但是当代码到达category.Fields时,出现以下异常:   无法加载类型   \'ADODB.FieldsToInternalFieldsMarshaler \'   从程序集'TestCOMCalls,   版本= 1.0.0.0,文化=中性,   PublicKeyToken = null \'。 我用这个错误搜索了谷歌(或者只是通过\'ADODB.FieldsToInternalFieldsMarshaler \'而找不到任何可以帮助我解决问题的东西)。 我想知道,我缺少参考吗?除了普通的参考文献,我还将此项目添加到了我的项目中:   ADODB   Microsoft ActiveX数据对象2.5库   C:\\ WINDOWS \\ assembly \\ GAC \\ ADODB \\ 7.0.3300.0__b03f5f7f11d50a3a \\ ADODB.dll 就像我说过的那样,我以前从未做过,但是通过仔细研究一下,我可以看到有些人正在这样做(在object.Fields上进行foreach),它似乎对他们有用。 任何帮助或指示将不胜感激:) 谢谢!     
已邀请:
它在各个引用上-不在项目属性中。在解决方案资源管理器窗口中,打开“引用”(在项目下),然后单击有问题的引用。属性窗口将有一个选项,用于“嵌入互操作类型”(针对每个参考)。 在Visual Basic 2010中: 要关闭嵌入互操作类型: 项目菜单>显示所有文件,解决方案资源管理器:>参考:> ADODB>嵌入间隔类型= False。 Microsoft.Office.Interop.Access>嵌入的Interof类型= False 现在,您将能够发布,并且ADODB也将出现在:项目菜单>项目属性…发布TAB>应用程序文件中     
解决了: 解决方案资源管理器->显示所有文件(菜单项)->引用-> Adodb->(属性)->嵌入互操作类型-> False。     
       在这里查看我对这个问题的发现。我引用了您的,但是仍然无法使ADODB正常工作。    补充一点: SolutionExplorer->查看所有文件。 对于ADODB: -嵌入... =错误; -复制本地= True。     
在VS 2013中遇到了同样的问题,解决方案是 引用并选择ADODB,在属性上,您将看到Embed Interof types = True,然后将其更改为false。     
好的,我知道如何执行此操作:
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();
}
    
我在清除临时文件(VS 2017)时遇到此问题。解决此异常的方法,您需要更改
Solution Explorer > References > adodb > \"Then Right click and choose properties\" > Embed Interop Types, set \"True\" to \"False\"
    

要回复问题请先登录注册