F# 类型提供程序依赖项解析 - "Could not load file or assembly..."



我在尝试使用我的类型提供程序时遇到"无法加载文件或程序集……系统找不到指定的文件"错误。

该错误出现在生成正在使用的应用程序时,但在生成之前在visual studio中未显示为"红色歪歪扭扭"。

我已经在下面复制了我的TP,但问题发生在Database.listDbs调用中,我强烈怀疑问题不是下面的代码,而是我如何打包依赖项。

我调用了Microsoft.Azure.DocumentDB包,而该包又依赖于Newtonsoft.Json。找不到Newtonsoft.Json包。我正在使用Paket来管理依赖关系,并在上进行重定向

完整的代码(包括所有的paket文件)在github上:https://github.com/stewart-r/AzureDocumentDbTypeProvider/tree/dependency-issue

我发现这个问题看起来很相似,但解决方案没有任何区别。

我的TP代码如下:

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 ()

这是一个绑定重定向问题-您需要处理类型提供程序内部的BR。或者,您可以将依赖项限制为直接依赖项(例如DocumentDB)所需的最小版本。

您是否尝试过确保"TP依赖项位于TP本身所在的同一文件夹中"?

听起来您遇到的问题与此答案中描述的问题相同:https://stackoverflow.com/a/33889287/371698(引用此答案)

相关内容

  • 没有找到相关文章

最新更新