我正在尝试读取这样的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
{
// ...
}
Run Code Online (Sandbox Code Playgroud)
ListAll调用工作正常 - 我得到Recordset一些数据,我通过对对象执行QuickWatch确认.但是当代码到达categories.Fields时,我得到以下异常:
无法从程序集"TestCOMCalls,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null"加载类型"ADODB.FieldsToInternalFieldsMarshaler".
我用谷歌搜索了这个错误(或者只是通过'ADODB.FieldsToInternalFieldsMarshaler'找不到任何可以帮助我解决问题的东西).
我想知道,我错过了一个参考?除了正常的引用,我已经将这个添加到我的项目中:
ADODB Microsoft ActiveX数据对象2.5库C:\ WINDOWS\assembly\GAC\ADODB\7.0.3300.0__b03f5f7f11d50a3a\ADODB.dll
就像我说的那样,我以前从未这样做过,但通过谷歌搜索,我能够看到一些人这样做(foreach on the object.Fields),它似乎适合他们.
非常感谢任何帮助或方向:)
谢谢!
Bob*_*Bob 40
它位于各个引用上 - 而不是项目属性中.在解决方案资源管理器窗口中,打开"参考"(在项目下),然后单击相关参考.属性窗口将有一个Embed Interop Types选项(对于每个引用).
在Visual BAsic 2010中:
要关闭嵌入互操作类型:
项目菜单>显示所有文件,解决方案资源管理器:>参考:> ADODB>嵌入间隔类型= False.Microsoft.Office.Interop.Access> Embed Interof types = False
您现在可以发布,ADODB也将出现在:项目菜单>项目属性...发布选项卡>应用程序文件
小智 11
解决了:
Solution Explorer - >显示所有文件(菜单项) - > Referances - > Adodb - >(properties) - > Embed Interop Types - > False.
看看我在这个问题上找到了什么.我引用了你的,但仍无法让ADODB工作.
很少添加:
SolutionExplorer - >查看所有文件.对于ADODB: - 嵌入... =错误; - 复制Local = True.
小智 7
我在清除临时文件( VS 2017)时遇到了这个问题。您需要更改此异常的解决方案 Solution Explorer > References > adodb > "Then Right click and choose properties" > Embed Interop Types, set "True" to "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();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
32726 次 |
最近记录: |