FSharp.Core: не удалось загрузить файл или сборку

У меня есть следующая ошибка при попытке запустить тест:

{System.IO.FileLoadException: не удалось загрузить файл или сборку 'FSharp.Core, версия =3.3.1.0, культура = нейтральная, PublicKeyToken=b03f5f7f11d50a3a' или одна из ее зависимостей. Определение манифеста обнаруженной сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040) Имя файла: 'FSharp.Core, версия =3.3.1.0, культура = нейтральная, PublicKeyToken=b03f5f7f11d50a3a' в Register.RegisterResponse.__ DebugDisplay ()

Tests.dll

FSharp.Core: 3.1.2.5

Целевая среда выполнения F#: 4.3.1.0

Целевая структура: 4.6

Тип вывода: библиотека классов

ManageAccount.dll

FSharp.Core: 3.1.2.5

Целевая среда выполнения F#: 3.3.1.0

Целевая среда: переносимое подмножество.NET (.Net Framework 4.5, ASP.Net Core 1.0, Windows 8)

Тип вывода: библиотека классов

Затем я добавил следующую конфигурацию приложения в свой тестовый проект:

<?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="3.1.2.5" newVersion="3.3.1.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

Если мне нужен конфиг приложения, какое значение должно быть установлено для моего bindingRedirect?

2 ответа

Решение

Пытаться <bindingRedirect oldVersion="0.0.0.0-999.999.999.999" newVersion="3.3.1.0" />, Это то, что большинство F# проектов, похоже, делают для FSharp.Core. (Или же newVersion="4.3.1.0", или даже newVersion="4.4.0.0" если вы обновитесь до более новой версии FSharp.Core).

Вы должны использовать новейшую версию (4.3.1.0 в этом случае) в bindingRedirect/newVersionиначе вы, вероятно, получите ошибки из кода в Tests.dll сборка, которая опирается на более новую версию.

В качестве альтернативы вы можете обновить ссылку в одной из сборок (понизить Tests.dll или обновить ManageAccount.dll) так что они оба используют одну и ту же версию.

Другие вопросы по тегам