WCF サービスで次のランタイム エラーが発生します。
Could not load file or assembly 'MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
いろいろ調べたところ、Assembly Binding Log ViewerまたはProcess Monitorを使用する提案が見つかりました。どちらも、または何の情報も得られませんでした (つまり、ログ ビューアーには何も表示されず、プロセス ビューアーには、試行されているアセンブリの読み込みが表示されませんでした)。
私は最終的に、このユーティリティ (依存関係ウォーカー)を使用して、アセンブリが実際に探しているものを見つけるという提案に出くわしました。開くとすぐにエラーが発生しました。ログには次のように記載されていました。
エラー: CPU タイプが異なるモジュールが見つかりました。警告: 少なくとも 1 つの遅延読み込み依存モジュールが見つかりませんでした。警告: 遅延ロード依存モジュールにエクスポート機能がないため、少なくとも 1 つのモジュールに未解決のインポートがあります。
Error: Modules with different CPU types were found.
Warning: At least one delay-load dependency module was not found.
Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.
モジュールリストによると、これらは見つかりませんでした:
API-MS-WIN-CORE-COM-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-ERROR-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-ROBUFFER-L1-1-0.DLL
API-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLL
API-MS-WIN-SHCORE-SCALING-L1-1-0.DLL
DCOMP.DLL
IESHIMS.DLL
これらのいくつかは、RT フレームワークに関連しているように見えます。ただし、このアプリケーションは .NET 3.5 で開発されました (実際には、厳密にはそうではありません。4.5 で開発され、3.5 にダウングレードされました)。
これらのファイルのいくつかを見ると、それらが非常にコアな Windows ファイルであることを暗示しているように思われます。奇妙なことに、私はこの dll をソリューションの別の場所で (クライアント上で) 問題なく使用しました。
私はVS2012を試してみましたが、同じ問題が発生しましたが、VS2013を使用しています。
C ++に関連していますが、一見同じように見えるこの質問に出くわしました。
問題が何であるか、または次に何を試すべきかについて、誰かが私にガイダンスを与えることができますか?
これが私の融合ログです:
=== Pre-bind state information ===
LOG: DisplayName = MyAssembly.MyLib.XmlSerializers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null, processorArchitecture=MSIL (Fully-specified)
LOG: Appbase = file:///c:/myprog/bin/Debug/
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = myprog.exe
Calling assembly : System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: c:\myprog\bin\Debug\myprog.exe.config
LOG: Using host configuration file:
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
問題のライブラリを、文字列を返す単一の静的関数になるまで減らすことができましたが、それでもエラーが発生しました。