C# 类型为';的未处理异常;System.IO.FileNotFoundException';在c中# 我有一个C语言用户界面,并且调用C++DLL(C++ C++类库项目)来完成所有的代码处理。

C# 类型为';的未处理异常;System.IO.FileNotFoundException';在c中# 我有一个C语言用户界面,并且调用C++DLL(C++ C++类库项目)来完成所有的代码处理。,c#,c++,dll,C#,C++,Dll,然而,过了很长一段时间,我正在尝试运行我的项目,该项目已备份。在visual studio 2005中运行时出现以下异常: System.Windows.Forms.dll中发生类型为“System.IO.FileNotFoundException”的未处理异常 其他信息:找不到指定的模块。(HRESULT的例外:0x8007007E) 当我尝试在InitializeComponent()事件中调试以下代码(例如)时,会引发此异常 但是,即使在加载表单时没有出现任何问题,也会在此行抛出异常: A

然而,过了很长一段时间,我正在尝试运行我的项目,该项目已备份。在visual studio 2005中运行时出现以下异常:

System.Windows.Forms.dll中发生类型为“System.IO.FileNotFoundException”的未处理异常

其他信息:找不到指定的模块。(HRESULT的例外:0x8007007E)

当我尝试在InitializeComponent()事件中调试以下代码(例如)时,会引发此异常

但是,即使在加载表单时没有出现任何问题,也会在此行抛出异常:

Application.Run(new Form1());
此外,当我使用Ctrl-F5运行代码时,会出现以下错误:

Description:
      Stopped working

Problem signature:
Problem Event Name: CLR20r3
Problem Signature 01:   spvmain.exe
Problem Signature 02:   1.0.0.0
Problem Signature 03:   53840363
Problem Signature 04:   SPVMain
Problem Signature 05:   1.0.0.0
Problem Signature 06:   53840363
Problem Signature 07:   d
Problem Signature 08:   16
Problem Signature 09:   System.IO.FileNotFoundException
OS Version: 6.1.7600.2.0.0.768.2
Locale ID:  1033`
我已经安装了VMWare,并以32位运行代码,但它不起作用。运行单个文件时没有错误。当我试图运行整个应用程序时,出现了这个错误。
如何解决此问题?

尝试分步骤调试此问题:

你的C++与控制台应用程序结合得很好吗?(没有用户界面)
  • 没有C++代码,UI工作正常吗?< /LI>
  • 他们能一起工作吗

  • 该错误意味着它正在查找一个DLL,但找不到。我知道有两种方法可以追踪这个问题

    第一个选项,编辑程序以显示试图加载的程序集,您将看到尝试加载但失败的任何DLL的名称

        static void Main(string[] args)
        {
            AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
            Application.Run(new Form1());
        }
    
        private static System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
        {
            Debug.WriteLine("Trying to resolve:" + args.Name);
            return null;
        }
    
    另一个选项是通过启用程序集绑定日志。以管理员身份打开程序并转到设置按钮,将选项设置为“日志绑定失败”,并将日志路径设置为稍后可以找到的某个地方进行清理


    一旦你这样做了,运行你的程序并使其出错,点击刷新按钮,然后你可以查看在哪里生成的日志文件,并查看哪个程序集要求什么以及它在哪里查找失败的加载。

    *当执行选项在InitialiseComponent()中抛出并显示“Winform DLL中的异常”时,检查是否所有.resx,.designer.cs和.cs文件存在。。当表单中任何地方出现异常时,它都会显示在应用程序中。如果表单中没有“catch”块,请自行运行。
        static void Main(string[] args)
        {
            AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
            Application.Run(new Form1());
        }
    
        private static System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
        {
            Debug.WriteLine("Trying to resolve:" + args.Name);
            return null;
        }