ファイルを解凍する機能を備えた .NET Framework 3.5 を使用して C# でアプリケーションを作成しています。ただし、実行すると、解凍方法に到達するとすぐに、Windowsの「動作が停止しました」エラーでクラッシュします。メソッド内の行を読み取らず、メソッドに入るとクラッシュします。
Description:
Stopped working
Problem signature:
Problem Event Name: CLR20r3
Problem Signature 01: test.exe
Problem Signature 02: 0.0.0.0
Problem Signature 03: 50b03509
Problem Signature 04: Test
Problem Signature 05: 0.0.0.0
Problem Signature 06: 50b03509
Problem Signature 07: 1
Problem Signature 08: 38
Problem Signature 09: System.IO.FileNotFoundException
OS Version: 6.1.7601.2.1.0.256.48
Locale ID: 1033
「停止した作業メニュー」からデバッグ機能を使用した後、このエラーが発生します。
Could not load file or assembly 'Interop.Shell32, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
このコードを使用して、CodeDom コンパイラ内に Shell32.dll をインポートします。
Params.ReferencedAssemblies.Add("Interop.Shell32.dll");
クラッシュするメソッド内でファイルを解凍するコードを次に示します。
Shell32.ShellClass sc = new Shell32.ShellClass();
Shell32.Folder SrcFlder = sc.NameSpace(source);
Shell32.Folder DestFlder = sc.NameSpace(dest);
Shell32.FolderItems items = SrcFlder.Items();
DestFlder.CopyHere(items, 20);
なぜこれが起こっているのかわかりません。元のアプリケーション内で完全に動作しますが、CodeDom を使用してコンパイルし (エラーは発生しません)、実行すると、この問題が発生します。COM を正しく参照していませんか?