最近我遇到了一个运行时错误的麻烦:-
无法从程序集ADODB.FieldsToInternalFieldsMarshaler加载类型“my_assembly”
我正努力纠正给这里,这里和这里的建议。但是这样做(设置Embed Interop Types=false
、Copy Local=true
和Isolated=false
)导致了大量编译错误消息:-
不允许从“ADODB.Recordset”到“ADODB.Recordset”的隐式转换
当将记录集作为ByRef
参数传递时,就会发生这种情况。
建议的解药..。
CType(my_record_set, ADODB.Recordset)
结果是另一个相同类型的错误,这可能需要无限多的CTypes才能治愈。然而,错误消息的Daily性质以及在进行与项目相关的更改之前编译得很好的事实使我得出了这样的结论:代码并不是真正的问题;它是与这个工作周期有关的。
那么,是否有人知道工作周期的问题所在,或者如何修复所建议的解决方案导致的编译错误?
编辑错误所显示的代码:-
Dim record_set As ADODB.Recordset = Nothing
query_string = "some sql-server query"
db_error = Database.DoQuery(query_string, record_set) ' Error in this line
数据库类具有
Public MustOverride Function DoQuery(
ByVal query_string As String, _
ByRef record_set As ADODB.Recordset) As DATABASE_ERRORS
特别的覆盖是:-
Public Overrides Function DoQuery(
ByVal query_string As String, _
ByRef record_set As ADODB.Recordset) As DATABASE_ERRORS
record_set = New ADODB.Recordset
record_set.CursorLocation = ADODB.CursorLocationEnum.adUseClient
record_set.Open(query_string,
database_connection,
ADODB.CursorTypeEnum.adOpenStatic,
,
ADODB.CommandTypeEnum.adCmdText)
End Function
(为简洁而省略的错误处理)。
发布于 2016-11-21 12:22:57
我来这里是为了一个类似的问题,但是被引用的图书馆是我们自己的。我找到了解决方案这里,删除了对编译库的引用,为我解决了这个问题。在同一解决方案中同时引用编译版本和源代码,vb.net编译器似乎会感到困惑。
https://stackoverflow.com/questions/19560367
复制相似问题