問題タブ [sgen]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1974 参照

.net - リリース ビルド中に CefSharp.Core.dll が見つからない

AnyCPU で「32 ビット優先」として配布されている .net 4.6.2 プロジェクトがあり、パッケージに x86 と x64 の両方のバージョンがある CefSharp を使用しています。

AnyCPU サポートを追加するための CefSharp プロジェクトの推奨事項 (オプション 1)に従って、次のことを行いました。

  1. 私の .csproj ファイルの最初に true を追加しました
  2. app.config ファイルに以下を追加しました。
  1. すでに述べたように、私のプロジェクト構成はすべて「32ビットを優先」に設定されています
  2. 起動時に Cef を次のように初期化しました。

デバッグではすべて正常に動作しますが、リリース バージョンをビルドしようとすると、詳細モードでエラーが発生します。

2>SGEN: エラー: ファイルまたはアセンブリ 'CefSharp.Core.dll' またはその依存関係の 1 つを読み込めませんでした。指定されたモジュールが見つかりませんでした。

さらに上には、SGEN への次の参照が渡されていることがわかります。

2> 参照 = 2>C:\SVN\MySolution\Branches\MyBranch\packages\CefSharp.Common.63.0.2\build..\CefSharp\x86\CefSharp.Core.dll 2>C:\SVN\MySolution\Branches \MyBranch\packages\CefSharp.Common.63.0.2\build..\CefSharp\x86\CefSharp.dll 2>C:\SVN\MySolution\Branches\MyBranch\packages\CefSharp.WinForms.63.0.2\build.. \CefSharp\x86\CefSharp.WinForms.dll

CefSharp.Common.props ファイルからのもののようです:

または CefSharp.Common.targets ファイル:

ファイル名の "build.." 部分が SGEN によって解決されない場合に備えて、"$(MSBuildThisFileDirectory).." をハードコーディングしてみました (実際にはこれを実行したくない理由がたくさんあります。しかし、それはテストでした)、まったく同じ問題が発生しましたが、正しい絶対パスが SGEN への参照として渡されました:

2> 参照 = 2>C:\SVN\MySolution\Branches\MyBranch\packages\CefSharp.Common.63.0.2\CefSharp\x86\CefSharp.Core.dll 2>C:\SVN\MySolution\Branches\MyBranch\packages \CefSharp.Common.63.0.2\CefSharp\x86\CefSharp.dll 2>C:\SVN\MySolution\Branches\MyBranch\packages\CefSharp.WinForms.63.0.2\CefSharp\x86\CefSharp.WinForms.dll

これにより、SGEN が dll を読み込めない理由の問題が残ります。したがって、私の現在の考えでは、これは依存関係の欠落によるものです。この参照リストに libcef.dll が含まれていることを期待する必要がありますか? .csproj ファイルに他のパッケージを追加しました。

また、上記の 2 番目の x64 インポート行をコメントアウトしようとしましたが、役に立ちませんでした。

[更新] Fusion のログ記録をオンにしました ( SGEN エラーに関する Yavor Georgiev のブログ投稿によると)、それによると、dll は正常にロードされました。