web-dev-qa-db-ja.com

CefSharp-ファイルまたはアセンブリ 'CefSharp.Core.dll'またはその依存関係の1つを読み込めませんでした

私はCefSharpWinFormsアプリに数週間取り組んできましたが、問題はありませんでした。今朝、アプリケーションにいくつかのものを追加しているときに、何かをテストするためにそれを実行しようとしましたが、以下のエラーが発生しました:

System.IO.FileNotFoundExceptionが未処理でしたメッセージ:mscorlib.dllでタイプ「System.IO.FileNotFoundException」の未処理の例外が発生しました追加情報:ファイルまたはアセンブリ「CefSharp.Core.dll」またはその依存関係の1つを読み込めませんでした。指定されたモジュールが見つかりませんでした。

しばらく検索した後、私はこれを見つけました:

https://github.com/cefsharp/CefSharp/wiki/Frequently-asked-questions#Runtime_dependencies

プロジェクトのbin/Debug/x86を確認しましたが、すべての依存関係が存在しているようです。さらに重要なことに、5分前は正常に機能しており、EntityFrameworkの移行では単一のクラス以外には何も触れていませんでした。

ソリューションのクリーニングと再構築、Visual Studioの再起動、PCの再起動、および/ bin/Debugのクリアを試みましたが、いずれも役に立ちませんでした。

数日後にこのエラーが表示されるのはなぜですか?また、どうすれば問題を解決できますか?

編集:さらに実験を行ったところ、アプリケーションをリリースモードで実行できますが、デバッグモードでは実行できません。リリースモードの出力パスをデバッグに変更すると、同じエラーで失敗します(同様に、リリース出力パスでデバッグに成功します)。

7
jardantuan

まず、VC++ディストリビューションがインストールされていることを確認してください。

Cefsharp v65以降、VC++ 2015 Redistをダウンロードし、古いCefSharpバージョンはVC ++ 2013Redistを使用します。

適切なバージョンは https://support.Microsoft.com/en-gb/help/2977003/the-latest-supported-visual-c-downloads からダウンロードできます。

第二に、これまで人々がこれについて言及しているのを見たことがありませんでした。この問題に数時間取り組んだ後、この解決策を見つけました。

一部のCefSharpバージョンにはCRTパックが必要です。それらは "C:\ Program Files(x86)\ Windows Kits\10\Redist\ucrt\DLLs "、適切なバージョンフォルダー(x86またはx64、CefSharpターゲットによって異なります)を選択し、すべてのファイルをプロジェクトのリリースフォルダーにコピーします。

2
SuperBerry

最近、私は同様の問題を抱えていました。しかし、リリースモードでも同じ問題が発生しました。 Github cefsharp FAQsthat同様のリンクを通過します。

注2は私の問題を解決しました

ソースからコンパイルし(非推奨、Nugetパッケージを使用)、デバッグモードでビルドできなくなったが、リリースビルドは正常に機能する場合は、VisualStudioのバージョンを修復する必要があります。これは、上記のように、不足しているアンマネージ.dllファイルとまったく同じメッセージが表示されるまれなケースで発生します。

Visual Studioを修復する必要があり、すべてが以前と同じように機能し始めました。

2
bugMaker-237

VC++再配布パッケージをインストールするSuperBerryのソリューションは、私にとって問題を解決しました。ナイーブな観点から、トラブルシューティングに関する洞察を少しだけ提供します。

エラーメッセージは非常に明確です。アセンブルCefSharp.Core.dllが見つからないか、その依存関係の1つです。つまり、問題は、何が欠けているのかをどのように理解するかということです。

まず、CefSharp.Core.dllはありますか?ソリューションエクスプローラーで、この問題が発生しているプロジェクトの参照を確認します。 CefSharp.Coreへの参照が見つかります。見つからない場合は、そのアセンブリがありません。ある場合、問題は、必要な依存関係の1つが欠落していることです。 CefSharp.Coreリファレンスをクリックすると、詳細に、それが配置されている場所へのフルパスが表示されます。私の場合、それは「C:\ Users\tom\source\repos\MyProject\src\packages\CefSharp.Common.41.0.0\CefSharp\x86\CefSharp.Core.dll」にありました。

次に、CefSharp.Coreの依存関係のリストを取得して、欠落している依存関係を特定する必要があります。 Dumpbin.exeは、依存関係のリストを取得するために使用できるコマンドラインツールです。 dumpbinを使用するには、それがシステム環境変数のパスにあることを確認する必要があります。 VC Tools binディレクトリのパスで見つかりました。私の場合、次の場所で見つかりました: 'C:\ Program Files(x86)\ Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.25.28610\bin\Hostx64\x64 '。コマンドプロンプトターミナルを開き、CefSharp.Core.dllを含むフォルダーに移動し、次のように入力します。

 >dumpbin /dependents CefSharp.Core.dll

私が得た結果は次のとおりです。

 Dump of file CefSharp.Core.dll

 File Type: DLL

   Image has the following dependencies:

KERNEL32.dll
MSVCP110.dll
MSVCR110.dll
libcef.dll
USER32.dll
mscoree.dll

何年もMicrosoftVisual Studioを使用していなかったので、それらの依存関係を解決できるように、それらの依存関係がどこにあると思われるかを調べなければなりませんでした。不足しているdllが見つかるまで、「Kernel32.dllはどこにありますか」などのインターネット検索を各dllに対して実行しました。私の場合、MSVCR110.dllが見つからなかったので、それが私の問題であると強く疑っていました。次に、「MSVCR110.dllが見つかりません」をインターネットで検索したところ、それがvc ++再配布の一部であることがわかりました。 (SuperBerry、あなたはあなたの最初のポイントに正しかった)。また、次の場所からダウンロードできることもわかりました: ' https://www.Microsoft.com/en-us/download/details.aspx?id=30679 '。 x86バージョンとx64バージョンの両方をダウンロードしました(ただし、このプロジェクトにはx86バージョンのみが必要でした)。これらは実行可能ファイルであり、実行時にインストールされます。それらをインストールした後、「C:\ Windows\SysWOW64」と「C:/ Windows\System32」にそのコピーが見つかりました。そして低く、この問題が解決されたのを見てください。

このプロセスから私が学んだことは、適切なVC++再配布パッケージがインストールされているかどうかを知るのは難しいということでした。 VisualStudioがVC++機能を有効にしてインストールされたときにインストールされたと思いました。 Visual Studioコミュニティバージョン2019を使用しています。使用しているプロジェクトは、GitHubソースから複製したプロジェクトでした。私はまだVC++再配布のバージョン管理について混乱しています。たとえば、新しいバージョンをインストールして、それが機能したでしょうか(つまり、下位互換性)?

0
Tom Rutchik