C# 类型为';的未处理异常;System.IO.FileNotFoundException';在c中# 我有一个C语言用户界面,并且调用C++DLL(C++ C++类库项目)来完成所有的代码处理。
然而,过了很长一段时间,我正在尝试运行我的项目,该项目已备份。在visual studio 2005中运行时出现以下异常: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
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++与控制台应用程序结合得很好吗?(没有用户界面)
该错误意味着它正在查找一个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;
}