Клиент MongoDB выбрасывает FileNotFoundException в mscorlib

Я использую Visual Studio.NET 4.6, и у Robomongo нет проблем с подключением к моей базе данных

Мой импорт для MongoDB

using MongoDB.Driver;
using MongoDB.Driver.Builders;
using MongoDB.Bson;

Код, который выполняет:

MongoClient client = new MongoClient("mongodb://localhost");
MongoServer server = client.GetServer();
MongoDatabase mongoDatabase = server.GetDatabase("GameCollection");

Полное сообщение об ошибке:

Произошло необработанное исключение типа "System.IO.FileNotFoundException" в mscorlib.dll

Дополнительная информация: Не удалось загрузить файл или сборку 'System.Runtime.InteropServices.RuntimeInformation, Version = 4.0.0.0, Culture = нейтральный, PublicKeyToken = b03f5f7f11d50a3a' или одну из ее зависимостей. Система не может найти указанный файл.

Ответ 1

Установите недостающий пакет. Используя Package-installer, выполните следующую команду:  Install-Package System.Runtime.InteropServices.RuntimeInformation

Ответ 2

У меня была такая же проблема здесь. Исправление довольно простое: отредактируйте файл конфигурации и на узле "pendentAssembly ", где атрибут name -" System.Runtime.InteropServices.RuntimeInformation ", просто удалите атрибут publicKeyToken.

Удачи

Ответ 3

В моем случае у меня уже была установлена System.Runtime.InteropServices.RuntimeInformation, но она продолжала выдавать мне ту же ошибку. Либо жаловался, что 4.0.0.0 не был найден, либо, если я обновил app.config до 4.3, он жаловался, что 4.3.0.0 отсутствует.

Однако после удаления и переустановки нескольких пакетов он начал работать, и, хотя версия 4.3 System.Runtime.InteropServices.RuntimeInformation была установлена, для app.config требовалось наличие версии 4.0.1.0.

<dependentAssembly>
    <assemblyIdentity name="System.Runtime.InteropServices.RuntimeInformation" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
  </dependentAssembly>

Я понятия не имею, почему, но это, наконец, работает для меня.

Ответ 4

После долгих экспериментов кажется, что web.config требуется следующее:

<dependentAssembly>
   <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
   <bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0" />
</dependentAssembly>
<dependentAssembly>
   <assemblyIdentity name="System.Runtime.InteropServices.RuntimeInformation" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
   <bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" />
</dependentAssembly>

Каковы бы ни были перенаправления NuGet, они были неверными. Возможно, это не проблема MongoDB как таковой, возможно, проблема с пакетами Microsoft Nuget/версией.

Ответ 5

В моем случае пакет уже был установлен. Однако произошло несоответствие версий в файле web.config. Переустановка пакета устранила проблему. Откройте консоль диспетчера пакетов и введите:

Update-Package System.Runtime.InteropServices.RuntimeInformation -Reinstall

Ответ 6

У меня была такая же проблема. Потребовалось несколько минут, чтобы выяснить, что моя проблема заключалась в том, что я обновил пакет nuget "System.Runtime.InteropServices.RuntimeInformation", и кажется, что ссылка на драйвер MonghDb csharp имеет SpecificVersion = true.

Удалите все пакеты nuget и установите его еще раз, или просто понизите его до той же версии, что и в качестве зависимости от драйвера MongoDb.

Удачи!

Ответ 7

Это выглядит безумно, но. Я получил эту проблему в Windows Server 2012 R2.

Помогли только установка последних обновлений. Это был "Совокупность безопасности и качества 2018-12 для .NET для Windows..." (KB4471989).