web-dev-qa-db-ja.com

MongoDBクライアントがmscorlibでFileNotFoundExceptionをスローする

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");

完全なエラーメッセージ:

Mscorlib.dllで「System.IO.FileNotFoundException」タイプの未処理の例外が発生しました

追加情報:ファイルまたはアセンブリ「System.Runtime.InteropServices.RuntimeInformation、Version = 4.0.0.0、Culture = neutral、PublicKeyToken = b03f5f7f11d50a3a」またはその依存関係の1つをロードできませんでした。システムは、指定されたファイルを見つけることができません。

16
HealdGuild

不足しているパッケージをインストールします。 Package-installerを使用して、次のコマンドを発行します。Install-PackageSystem.Runtime.InteropServices.RuntimeInformation

13
user3096476

ここでも同じ問題がありました。修正は非常に簡単です。構成ファイルを編集し、name属性が「System.Runtime.InteropServices.RuntimeInformation」であるノード「dependentAssembly」で、publicKeyToken属性を削除するだけです。

幸運を

9
Galo Cego

私の場合、System.Runtime.InteropServices.RuntimeInformationが既にインストールされていますが、同じエラーが引き続き発生します。 4.0.0.0が見つからなかったことを訴えるか、app.configを4.3に更新した場合、4.3.0.0が欠落していると訴えました。

ただし、いくつかのパッケージをアンインストールして再インストールすると、動作を開始し、System.Runtime.InteropServices.RuntimeInformationのバージョン4.3がインストールされていても、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>

理由はわかりませんが、最終的にはうまくいきます。

6
Tim

多くの実験を行った結果、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
Kunal

私の場合、パッケージはすでにインストールされています。ただし、web.configファイルのバージョンに不一致がありました。パッケージを再インストールすると、問題が修正されました。パッケージマネージャーコンソールを開いて入力し、

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

ここでも同じ問題がありました。数分かかりましたが、私の問題は、nugetパッケージ「System.Runtime.InteropServices.RuntimeInformation」を更新したという事実であり、MongoDb csharpのドライバー参照のSpecificVersion = trueのようです。

すべてのnugetパッケージを削除して再度インストールするか、MongoDbドライバーの依存関係としてインストールされているのと同じバージョンにダウングレードします。

幸運を!

0
ibirite

クレイジーに見えますが。 Windows Server 2012 R2でこの問題が発生しました。

インストールの最新の更新プログラムのみが役立ちました。それは「2018-12 Windows用.NETのセキュリティと品質ロールアップ...」(KB4471989)でした。

0