web-dev-qa-db-ja.com

{myassembly}によってインポートされたプロシージャを読み込めませんでした

prorgamを実行しているときに、ライブラリが不足しているようです。プロジェクトの出力を起動すると、起動時に例外が発生します。

A first chance exception of type 'System.IO.FileLoadException' occurred in mscorlib.dll
An unhandled exception of type 'System.IO.FileLoadException' occurred in mscorlib.dll

Additional information: A procedure imported by 'my Assembly, Version=xx.1.1.0, Culture=neutral, PublicKeyToken=7292581204d9e04a' could not be loaded.

'ScriptX.vshost.exe' (Managed): Loaded 'C:\WINDOWS\Assembly\GAC_MSIL\System.Configuration\2.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll', No symbols loaded.

私の質問は、どのライブラリが欠落しているかをどのように判断できるかです。この時点では、渡された値が表示されないためです。

mscorlib.dll!System.AppDomain.ExecuteAssembly(string assemblyFile, System.Security.Policy.Evidence assemblySecurity, string[] args) + 0x3a bytes    
24
BlueTrin

実際、これらの診断のためのメカニズムが組み込まれています。

(1)プロジェクトのプロパティ/デバッグで、[ネイティブコードのデバッグを有効にする]がオンになっていることを確認します。

enter image description here

(2) show-loader-snaps フラグを立てます-これはIFEOのレジストリキーであり、「GlobalFlags」GUIからアクセスできます。

enter image description here

(3)アプリを実行し、(very)の詳細な出力ペインを調べます。ほとんどの場合、最後までスキップするか、「エラー」を探すことができます。

詳細 ここ

23
Ofek Shilon

Dllimportを実行していますか? -これは、管理されていないdllが見つからないという問題のように見えますか?

まず、(dllimportを介して)呼び出しているアンマネージdllまたはexeが、構築している.Netexeと同じフォルダーに展開されていることを確認します。

呼び出し元のアセンブリのソースが利用できない場合は、そのアセンブリで reflector を使用してdllimportステートメントを検索してみてください。

それ以外に、fustionログビューアがアセンブリの負荷の問題を追跡できるようにすることもできます-詳細については、これを参照してください ブログ投稿 および msdnページ

8
Richard

AppDomain.AssemblyResolveイベントのハンドラーを実装します。 ResolveEventArgs.Nameを使用して、探しているアセンブリを示します。これがこの特定のアセンブリのトラブルシューティングを行うためだけの場合は、Fuslogvw.exeを使用してください。ハングアップが管理されていないアセンブリである場合、DependencyWalkerのプロファイルオプションは、どのLoadLibrary()呼び出しが失敗しているかを表示できます。 SysInternalsのProcMonも機能しますが、ノイズが多くなります。

5
Hans Passant

COMを使用している場合、RegAsm.exeでdllの登録を解除して再登録する必要がある場合があります。それが先週私にとってこの問題を修正したものであり、物事は同期していませんでした。

0
hellyale