我在使用F#Generative Type Provider的程序集中创建的任何类型时遇到问题。我创建了一个YouTube video来证明这一点。
我收到的错误消息是:
我不明白,因为类型绝对是在程序集中。为了解决这个问题,程序集是一个非常基本的C#dll。视频中的代码可通过git:
获得 git url:https://code.google.com/p/froto/
git branch:help
任何故障排除的想法将不胜感激。我希望在an F# Type Provider for .proto files上取得更多进展,但我坚持这一点。
答案 0 :(得分:5)
我已快速查看了您的代码 - 正如我在评论中提到的,我认为通过使用由F#3.0示例包定义并在MSDN上记录(有点)的GivenTypes API可以提供更好的服务。
基本上,原始类型提供程序API有许多假设,在这些假设中您很难手动维护。我认为您遇到的具体问题是编译器希望在程序集中看到一个名为tutorial.Person
的类型(因为它是tutorial.AddressbookProto
上方法的返回类型,您将其作为生成类型公开),但它并没有嵌入你的装配。
然而,这实际上只是几个问题中的一个 - 正如您可能已经意识到的那样,如果您定义的类型被称为tutorial.AddressbookProto
以外的任何其他类型,您将看到其他错误。这是因为您使用具体类型作为ApplyStaticArguments
的返回,但您通常希望使用合成的System.Type
实例,该实例准确反映用户使用的命名空间和类型名称(例如, ProvideTypes API ProvidedTypeDefinition
类继承自System.Type
并处理此簿记。)