【问题标题】:Compile-time error with generative type provider生成类型提供程序的编译时错误
【发布时间】:2018-10-23 21:36:38
【问题描述】:

我在FSharp.Data.SqlClient 的一个分支上遇到了问题,我正在使用生成式SqlEnumProvider 类型提供程序。当测试项目尝试使用提供的类型时,我收到以下编译时错误:

A problem occurred writing the binary 'C:\code\FSharp.Data.SqlClient\src\SqlClient.Tests\obj\Debug\net451\SqlClient.Tests.dll': Error in pass3 for type FSharp.Data.EnumTests, error: Error in GetMethodRefAsMethodDefIdx for mref = ("Parse", "TinyIntMapping"), error: Exception of type 'Microsoft.FSharp.Compiler.AbstractIL.ILBinaryWriter+MethodDefNotFound' was thrown.

在设计时,一切似乎都按预期工作。 (我对提供的类型等有智能感知)

我尝试了here 建议的解决方法,但没有任何乐趣。

【问题讨论】:

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


    【解决方案1】:

    如何使用容器方法,将所有提供的类型放入一个容器中,然后将所需的每一个都分出?

    我在很多类型提供程序中都使用了它,请查看 iOS 设计器类型提供程序以供参考:https://github.com/xamarin/fsharp-iOS-designer/blob/master/src/Xamarin.iOSProviders/iOSDesignerProvider.fs#L64-L86

    【讨论】:

    • 是的,这和我现在得到的很相似,谢谢你的建议!
    【解决方案2】:

    原来答案在 SDK 中的示例模板中,我只是没有仔细阅读它:

    • 应将提供程序类型(例如,SqlEnumProvider)添加到正在执行的程序集中。
    • 根类型(例如,SqlEnumProvider<"SELECT * FROM (VALUES(('One'), 1), ('Two', 2)) AS T(Tag, Value)">)应添加到提供的程序集中。

    在失败的代码中,我们将根类型添加到两个程序集。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-29
      相关资源
      最近更新 更多