Ошибка времени компиляции с провайдером генеративного типа - PullRequest
0 голосов
/ 20 октября 2018

У меня возникла проблема с веткой 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.

Во время разработки все, кажется, работает должным образом.(У меня есть intellisense на предоставленных типах и т.

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

Оказывается, ответ был в образце шаблона в SDK, я просто недостаточно внимательно его читал:

  • Тип поставщика (например, SqlEnumProvider) должен быть добавлен кисполняющая сборка.
  • Корневые типы (например, SqlEnumProvider<"SELECT * FROM (VALUES(('One'), 1), ('Two', 2)) AS T(Tag, Value)">) должны быть добавлены к предоставленной сборке.

В коде ошибки мы добавляли корневые типы к обоимсборок.

0 голосов
/ 22 октября 2018

Как насчет использования контейнерного подхода, когда вы помещаете все предоставленные типы в контейнер, декантируя каждый из них, который вам нужен?

Я использовал это во многих моих провайдерах типов, посмотрите наТип разработчика iOS для справки: https://github.com/xamarin/fsharp-iOS-designer/blob/master/src/Xamarin.iOSProviders/iOSDesignerProvider.fs#L64-L86

...