具有生成类型的项目在Assembly.GetExportedTypes()上失败

时间:2018-10-23 20:09:55

标签: f# type-providers fsharp.data.sqlclient

working正在将FSharp.Data.SqlClient升级到类型提供程序SDK的最新版本,并且在使用生成的类型时看到错误。引用许多生成类型的测试项目可以很好地进行编译,但是当我尝试运行xunit测试时,出现以下异常:

System.TypeLoadException: Could not load type 'BTL' from assembly 'SqlClient.Tests, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' because the parent does not exist. at System.Reflection.RuntimeAssembly.GetExportedTypes(RuntimeAssembly assembly, ObjectHandleOnStack retTypes) at System.Reflection.RuntimeAssembly.GetExportedTypes() at <StartupCode$FSI_0005>.$FSI_0005.main@()

我不确定类型BTL指的是什么-在测试中或类型提供程序源中的任何地方都看不到任何具有该名称的符号。而且我已经确认该问题与生成的类型有关-如果我注释掉对SqlEnumProvider的所有引用,但保留对已擦除类型的引用,则测试全部通过。

1 个答案:

答案 0 :(得分:0)

发现了度量单位生成类型的问题-这些提供的类型的基本类型为None,这在反映程序集类型时导致错误。将基本类型更改为Some typedefof<obj>就可以了,现在所有测试都通过了。

偶然地,神秘的BTL类型来自测试数据库中的数据,回想起来似乎很明显。