1

我最近遇到了运行时错误:-

无法从程序集 my_assembly 加载类型“ADODB.FieldsToInternalFieldsMarshaler”

我正在努力纠正这里这里这里给出的建议。但是这样做(设置Embed Interop Types=falseCopy Local=trueIsolated=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

(为简洁起见,省略了错误处理)。

4

1 回答 1

1

我来这里是为了类似的问题,但引用的库是我们自己的。我在这里找到了解决方案,删除对已编译库的引用为我解决了这个问题。似乎 vb.net 编译器因为在同一解决方案中同时引用了编译版本和源而感到困惑。

于 2016-11-21T12:22:57.767 回答