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
実際、これらの診断のためのメカニズムが組み込まれています。
(1)プロジェクトのプロパティ/デバッグで、[ネイティブコードのデバッグを有効にする]がオンになっていることを確認します。
(2) show-loader-snaps フラグを立てます-これはIFEOのレジストリキーであり、「GlobalFlags」GUIからアクセスできます。
(3)アプリを実行し、(very)の詳細な出力ペインを調べます。ほとんどの場合、最後までスキップするか、「エラー」を探すことができます。
詳細 ここ 。
Dllimportを実行していますか? -これは、管理されていないdllが見つからないという問題のように見えますか?
まず、(dllimportを介して)呼び出しているアンマネージdllまたはexeが、構築している.Netexeと同じフォルダーに展開されていることを確認します。
呼び出し元のアセンブリのソースが利用できない場合は、そのアセンブリで reflector を使用してdllimportステートメントを検索してみてください。
それ以外に、fustionログビューアがアセンブリの負荷の問題を追跡できるようにすることもできます-詳細については、これを参照してください ブログ投稿 および msdnページ
AppDomain.AssemblyResolveイベントのハンドラーを実装します。 ResolveEventArgs.Nameを使用して、探しているアセンブリを示します。これがこの特定のアセンブリのトラブルシューティングを行うためだけの場合は、Fuslogvw.exeを使用してください。ハングアップが管理されていないアセンブリである場合、DependencyWalkerのプロファイルオプションは、どのLoadLibrary()呼び出しが失敗しているかを表示できます。 SysInternalsのProcMonも機能しますが、ノイズが多くなります。
COMを使用している場合、RegAsm.exeでdllの登録を解除して再登録する必要がある場合があります。それが先週私にとってこの問題を修正したものであり、物事は同期していませんでした。