ich eine einfache Art-Provider erstellt haben, die ich einige vorab generierten Typen in einer Assembly verfügbar machen möchten, wie folgt:Intellisense funktioniert nicht für F # Typ Anbieter
[<TypeProvider>]
type TestProvider() as this =
inherit TypeProviderForNamespaces()
let providedType = ProvidedTypeDefinition(Assembly.GetExecutingAssembly(), "Test", "TypeLib", None)
do let assembly = Assembly.LoadFrom @"C:\Some\Long\Path\TestTypes.dll"
// Get same problem with providedType.AddAssemblyTypesAsNestedTypesDelayed(),
// which is what I really want to use
providedType.AddMember(assembly.GetType("TestTypes.Circle"))
this.AddNamespace("Test", [providedType])
ich verbrauchen diesen Anbieter aus einem anderen Projekt als folgt:
// Circle member not showing up under TypeLib
type Circle = Test.TypeLib.Circle
let c = Circle()
c.Radius <- 4.
printfn "%f" c.Radius
System.Console.ReadKey() |> ignore
Es kompiliert, läuft und funktioniert wie erwartet, aber aus irgendeinem Grund die Circle
zeigt nicht für Test.TypeLib in der Intellisense Liste nach oben. Auch wenn ich über Circle
schweben sagt es A reference to type 'TestType.Circle' in assembly 'TestTypes' was found, but the type could not be found in that assembly.
Was mache ich falsch?
UPDATE: Wie durch ein Dmitry vorgeschlagen, ich die related question sehen und heruntergeladen die associated type provider, die etwas Ähnliches zu tun versucht, was mir tut. Leider verhält sich dieser Anbieter auf meinem Rechner genauso wie meiner, d. H. Er bietet Intellisense für Namespaces, jedoch keine Typen. Ich weiß also nicht, ob es etwas Spezifisches für meine Konfiguration oder was sein könnte.
Haben Sie die Baugruppe im Reflektor oder Ihrem bevorzugten Demontagewerkzeug geöffnet? Könnte einen Blick wert sein. –
Hier ist die Antwort auf die ähnliche Frage http://stackoverflow.com/questions/15078419/emitting-generated-types-in-f-type-providers/15079605#15079605 –
Aktualisierte Frage mit zusätzlichen Informationen. – luksan