我正在使用.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吗?
最佳答案
无法加载文件或程序集'Interop.Shell32,版本= 1.0.0.0,
文化=中性,PublicKeyToken =空”或其依赖项之一。的
系统找不到指定的文件。
参考已加载到您的程序集中。但是您的应用程序找不到您的COM依赖项。
您需要在主可执行文件的根目录上具有“ Interop.Shell32.dll”。
为此,在Visual Studio上,单击引用时有一个选项是“ Copy Local”(复制本地)-仅将其设置为true,并将依赖项复制到下一个版本的应用程序文件夹中。
然后,您可以使用构建文件夹中存在的库文件运行应用程序。
关于c# - Shell32.dll引用引起的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13537850/