Как заставить waitFor работать при использовании навеса?

Я использую навес, и я не могу получить waitFor метод для работы.

Я пытаюсь использовать это так:

waitFor noBlockUI

где функция noBlockUI:

let noBlockUI () =
    (someElement "div.blockUI").IsNone

Теперь вызов waitFor находится в функции в модуле F#, и я вызываю эту функцию из проекта C#.

Я обнаружил, что мне нужно добавить FSharp.Core в мой проект на C#, чтобы все вызовы работали. Существует несколько пакетов NuGet, созданных Microsoft для FSharp:

Если я использую пакет 4.0.0, то, когда выполнение достигает метода с waitFor, я получаю эту ошибку:

System.MissingMethodException: метод не найден: "Microsoft.FSharp.Core.FSharpOption`1 canopy.core.someElement(System.String)".

Но если я использую пакет 4.3.0.0, то сразу, когда я пытаюсь запустить свои тесты, я получаю это:

System.TypeInitializationException: инициализатор типа для '.$ Canopy.core' вызвал исключение. ----> System.IO.FileLoadException: не удалось загрузить файл или сборку 'FSharp.Core, версия =4.0.0.0, культура = нейтральная, PublicKeyToken=b03f5f7f11d50a3a' или одна из ее зависимостей. Определение манифеста обнаруженной сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)

Любые идеи, что я могу сделать, получить waitFor работать?

1 ответ

Попробуйте добавить файл app.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="0.0.0.0-4.3.0.0" newVersion="4.3.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>
Другие вопросы по тегам