我最近遇到了运行时错误的问题: -
无法从中加载“ADODB.FieldsToInternalFieldsMarshaler”类型 程序集my_assembly
我正在努力纠正here,here和here给出的建议。但是这样做(设置Embed Interop Types=false
,Copy Local=true
和Isolated=false
)会导致大量编译错误消息: -
Option Strict On禁止来自'ADODB.Recordset'的隐式转换 到'ADODB.Recordset'
当记录集作为ByRef
参数传递时会发生这种情况。
建议的治疗方法......
CType(my_record_set, ADODB.Recordset)
会导致相同类型的另一个错误,这可能需要无限数量的CType来治愈。但是,错误消息的Daily-WTF性质以及在进行项目相关更改之前编译得非常好的事实使我得出结论:代码不是真正的问题;这与这项工作有关。
所以有人知道工作回合的问题是什么,或者如何解决建议的解决方案导致的编译错误?
编辑错误显示的代码: -
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
(为简洁省略了错误处理)。
答案 0 :(得分:1)
我来这里遇到类似的问题,但引用的库是我们自己的。我找到了解决方案here并删除了对编译库的引用为我解决了这个问题。似乎vb.net编译器因编译版本和源代码在同一解决方案中引用而感到困惑。