Beim Versuch, einen Fehler zu finden, konnte die Datei nicht gefunden werden konsumiere meinen Typ Provider.F # Typ Abhängigkeitsauflösung des Providers - "Datei oder Assembly konnte nicht geladen werden ..."
Der Fehler tritt bei der Erstellung der konsumierenden Anwendung auf, wird jedoch im Visual Studio vor dem Build nicht als "roter Schnörkel" angezeigt.
Ich habe meine TP unten kopiert, aber das Problem tritt innerhalb der Database.listDbs
Anruf und ich vermute stark das Problem ist nicht der Code unten, aber wie ich die Abhängigkeiten packen.
Ich rufe das Microsoft.Azure.DocumentDB-Paket auf, das wiederum von Newtonsoft.Json abhängt. Es ist das Newtonsoft.Json-Paket, das nicht gefunden werden kann. Ich benutze Paket, um Abhängigkeiten zu verwalten und Weiterleitungen zu haben.
Der vollständige Code (einschließlich aller Dateien paket) ist auf GitHub hier: https://github.com/stewart-r/AzureDocumentDbTypeProvider/tree/dependency-issue
Ich fand this question die sehr ähnlich scheint aber die Lösung keinen Unterschied machen.
Mein TP Code ist wie folgt:
namespace ProviderImplementation
open ProviderImplementation.ProvidedTypes
open Microsoft.FSharp.Core.CompilerServices
open System.Reflection
open System
open Config
open Database
[<TypeProvider>]
type public DocumentDbTypeProvider(config: TypeProviderConfig) as this =
inherit TypeProviderForNamespaces()
let thisAssembly = Assembly.GetExecutingAssembly()
let docDbType = ProvidedTypeDefinition(thisAssembly,namespaceName,"DocumentDbTypeProvider", baseType = Some typeof<obj>)
let initFn (typeName : string) (args : obj []) =
let acProvidedType = ProvidedTypeDefinition(thisAssembly, namespaceName, typeName, baseType = Some typeof<obj>)
acProvidedType.AddMember(ProvidedConstructor(parameters = [], InvokeCode = (fun args -> <@@ null @@>)))
let getDbProperties() =
Database.listDbs (args.[0] :?> string) (args.[1]:?> string)
|> List.map(fun d -> new ProvidedProperty(d.Name, typeof<string>, IsStatic = true, GetterCode = (fun _ -> <@@ "Test db name" @@>)))
acProvidedType.AddMembers(getDbProperties())
acProvidedType
let parameters =
[ ProvidedStaticParameter("accountEndPointUri", typeof<string>, String.Empty)
ProvidedStaticParameter("accountKey", typeof<string>, String.Empty)]
do
docDbType.DefineStaticParameters(parameters,initFn)
this.AddNamespace(namespaceName,[docDbType])
[<TypeProviderAssembly>]
do()
Ich denke, ich vermisse den Punkt mit diesem - viele Leute, die vorschlagen, dass ich sicherstellen muss, dass die DLLs in dem gleichen Ordner wie die DLL sind, aber ist das nicht das Standardverhalten? Ohne etwas Besonderes zu tun, wenn ich das TP baue, werden die TP-DLL und alle nugget-Paketdlls standardmäßig nach/bin/debug kopiert. Wenn ich das TP in diesem Ordner referenziere, erhalte ich immer noch den obigen Fehler. Verpasse ich den Punkt hier? –