0

ユーザーが型を指定できるようにするために、作業中の型プロバイダーに機能を追加しようとしています。型プロバイダーはジェネリック メソッドを提供できないため、その型を持つアセンブリを参照するしかないようです。

Owin ライブラリの型を使用してこの概念実証を試みましたが、提供された型を使用しようとすると問題が発生します。

ここに画像の説明を入力

ファイルが明らかに存在しているにもかかわらず、ファイルが見つからない、またはCSharpCodeProvider使用しているファイルがエラーになると表示されます(以前に誤ったファイルパスに対して行ったことがあります)。別の非型提供プロジェクトでこの問題を再現しようとしましたが、そこで動作します。

このプロジェクトのコードはこちら (input-type ブランチ): https://github.com/isaksky/routeprovider/tree/input-type

メインの RouteProvider ソリューションを開き、DebugOwin サンプルを実行してデバッグすることで問題を確認できます (RouteProvider を使用するサンプル ソリューションの Visual Studio の新しいインスタンスが開きます)。

4

2 に答える 2

0

Dmitry のソリューションは、それを行う 1 つの方法です。別の方法として、TP の依存関係が TP 自体が存在するフォルダーと同じフォルダーにあることを確認するだけです。このメカニズムは、Azure Storage TPに使用されます。

于 2015-11-24T09:00:34.520 に答える
0

誰かがこの回答をリンクしました。これには、問題と解決策の説明があります。

F# で別の dll を呼び出す型プロバイダー

次のように、typeprovider config ( cfg)を使用する必要がありましたReferencedAssemblies

      _assemblyResolver <- ResolveEventHandler(fun _ args ->
        let expectedName = (AssemblyName(args.Name)).Name + ".dll"
        let asmPath = 
            cfg.ReferencedAssemblies
            |> Seq.tryFind (fun asmPath -> IO.Path.GetFileName(asmPath) = expectedName)
        match asmPath with
        | Some f -> Assembly.LoadFrom f
        | None -> null)
      System.AppDomain.CurrentDomain.add_AssemblyResolve(_assemblyResolver)
于 2015-11-25T07:02:31.073 に答える