anchor.diff:      let currentLoadContext = AssemblyLoadContext.GetLoadContext(Assembly.GetExecutingAssembly())
   
       let tryResolveFileName (an : AssemblyName) =
  +        let isMatchingAssembly (assembly : Assembly) =
  +            let can = assembly.GetName()
  +            can.Name = an.Name &&
  +            can.Version >= an.Version &&
  +            can.GetPublicKeyToken() = an.GetPublicKeyToken()
  +
           currentLoadContext.Assemblies
  -        |> Seq.tryFind (fun a -> a.FullName = an.FullName)
  -        |> Option.filter (fun a -> not a.IsDynamic)
  +        |> Seq.filter (fun a -> not a.IsDynamic && not (String.IsNullOrEmpty a.Location))
  +        |> Seq.tryFind isMatchingAssembly
           |> Option.map (fun a -> a.Location)
               
       override this.Load an =
  
positive.code:         Assert.AreEqual(42, remoteValue)
  
      [<Test>]
      member __.``Simple AssemblyLoadProxy static state Scenario``() =
          use alc = new MirroredAssemblyLoadContext()
          use proxy = alc.CreateProxy<AssemblyLoadContextManager>()
  
negative.code:         { new ILoadContextProxy<'T> with
              member __.Dispose() = (remoteHandle :?> IDisposable).Dispose()
              member __.Execute<'R> (command : 'T -> 'R) =
                  let boxedCommand instance = let result = command instance in result :> obj
                  let commandBytes = pickler.Pickle<'T -> obj> boxedCommand
                  let responseBytes = remoteMethod.Invoke(remoteHandle, [|commandBytes|]) :?> byte[]
                  match pickler.UnPickle<Choice<obj,exn>> responseBytes with
  