我有一个具有C#用户界面的旧C#.NET Windows应用程序,所有处理后的代码都是通过调用C ++ dll(C ++类库项目)完成的,该项目被添加为C#项目的引用。
然而,经过很长一段时间,我正在尝试运行我的项目,该项目已备份。在visual studio 2005中运行它会产生以下异常:
An unhandled exception of type 'System.IO.FileNotFoundException' occurred in System.Windows.Forms.dll
Additional information: The specified module could not be found. (Exception from HRESULT: 0x8007007E)
当我尝试在InitializeComponent()事件中调试以下代码(例如)时抛出此异常。
public CSPVMain(string[] args)
{
InitializeComponent();
ParseArgument(args);
}
然而,实际上显示异常被抛出在这一行上,即使表单被加载而没有任何问题:
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位运行代码,但它没有用。我运行单个文件没有错误。当我试图运行整个应用程序时,我收到此错误。 我该如何解决?
答案 0 :(得分:0)
尝试按步骤调试问题:
答案 1 :(得分:0)
该错误意味着它正在寻找一个但无法找到的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;
}
另一个选项是通过fuslogvw启用程序集绑定日志。以管理员身份打开程序并转到设置按钮,将选项设置为" Log Bind Failures"并将日志记录路径设置为稍后可以找到以清理的位置。
执行此操作后,运行程序并使其出错,点击刷新按钮,然后您可以查看生成的日志文件,并查看哪个程序集询问了查找失败负载的内容和位置。