9

FParsec 0.9.2.0に依存するF#タイププロバイダーに取り組んでいます。FSharp.Core4.0.0.0に依存します。F#タイププロバイダーを使用しようとすると、次のエラーが発生します。

{"ファイルまたはアセンブリを読み込めませんでした'FSharp.Core、Version = 4.0.0.0、Culture = neutral、PublicKeyToken = b03f5f7f11d50a3a'またはその依存関係の1つ。システムは指定されたファイルを見つけることができません。": "FSharp.Core、Version = 4.0.0.0、Culture = neutral、PublicKeyToken = b03f5f7f11d50a3a "}

===事前バインド状態情報===
LOG:DisplayName = FSharp.Core、Version = 4.0.0.0、Culture = neutral、PublicKeyToken = b03f5f7f11d50a3a(完全に指定)
LOG:Appbase = file:/// C:/ Programファイル(x86)/ Microsoft Visual Studio 11.0 / Common7 / IDE /
ログ:初期PrivatePath = NULL
呼び出しアセンブリ:FParsec、バージョン= 0.9.2.0、Culture =ニュートラル、PublicKeyToken=e5c8267bb3bd1265。

とを追加してみましFroto.Gen.dll.configたがFParsec.dll.config、どちらもこれが含まれていました。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="4.0.0.0" newVersion="4.3.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

運がない。何か案は?私の次の行動計画は新しいものを作るFParsec.dllことですが、それが常にうまくいくとは限りません。

4

2 に答える 2

3

args.Nameに4.0.0.0が必要な場合に、AppDomain.CurrentDomain.AssemblyResolveをオーバーライドして、FSharp.Core 4.3.0.0の場所で明示的なAssembly.LoadFromを実行してみましたか?

于 2013-02-04T20:17:24.010 に答える
2

実際には、型プロバイダーで独自のアセンブリ リゾルバーを定義できます。

メソッドをオーバーライドResolveAssemblyすると、独自のアセンブリ解決スキームを提供できます。デフォルトの実装はかなり単純です。

default this.ResolveAssembly(args) = 
    let expectedName = (AssemblyName(args.Name)).Name + ".dll"
    let expectedLocationOpt = 
        probingFolders 
        |> Seq.map (fun f -> IO.Path.Combine(f, expectedName))
        |> Seq.tryFind IO.File.Exists
    match expectedLocationOpt with
    | Some f -> Assembly.LoadFrom f
    | None -> null

また、プローブ パスを追加して、アセンブリの解決をチェックする場所に影響を与えることもできます。

[<TypeProvider>] 
type MyProvider(config: TypeProviderConfig) as this = 
    inherit TypeProviderForNamespaces()
    do this.RegisterProbingFolder "/Developer/MonoTouch/usr/lib/mono/2.1/"
    ...
于 2014-03-28T09:11:07.340 に答える