代码之家  ›  专栏  ›  技术社区  ›  LOST

如何调试typeloadException而不在f代码中显示详细信息?

  •  1
  • LOST  · 技术社区  · 6 年前

    问题是我的类型之一, Expression<'P> 无法加载 TypeLoadException . 不幸的是,Visual Studio无法显示任何其他信息,包括 InnerException .

    实际上,我根本无法检查异常对象。当地人不显示 $exception 在手表窗口手动输入也找不到。堆栈窗口也是空的。

    我尝试过Fusion日志,但该程序集甚至没有显示在那里,例如,在加载此类型(和程序集)之前,日志似乎立即停止。

    我还尝试创建一个C项目,并调试它,而不是直接调试F项目,但得到了相同的问题。

    我使用的是F 4.5 Preview via vs 2017 15.8.0 Preview 5,但问题可能并不具体(代码使用的是4.5内容)。

    我最近做了一个巨大的改变使用自定义指针通过 byref 这还包括将项目迁移到目标.NET标准2.0。仍然有一个依赖于.NET之前的标准F nuget包。

    所有相关项目中都安装了fsharp.core-4.5.2,但依赖项除外。

    另外,如果F工具团队的某个人看到了这一点,代码就在 https://github.com/Church-of-the-Singularity/GeneticProgramming 标签 repro/TypeLoadException-Expression

    更新 这似乎是一个编译器错误。我将失败的例子缩小到以下代码:

    [<Struct>] type Ptr<'P, 'T when 'T: struct>(ptr: 'P) = member this.Address = ptr;;
    [<Struct>] type MyExpr<'P> = Zero | Reference of reference:Ptr<'P, MyExpr<'P>>;;
    

    如果你只是把它粘贴到F Interactive中,你会看到我的异常。在4.1和4.5中复制。报道 to GitHub .

    1 回复  |  直到 6 年前
        1
  •  1
  •   LOST    6 年前

    [<Struct>] type Ptr<'P, 'T when 'T: struct>(ptr: 'P) = member this.Address = ptr;;
    [<Struct>] type MyExpr<'P> = Zero | Reference of reference:Ptr<'P, MyExpr<'P>>;;
    

    to GitHub

    'P 'T Ptr