1

这是我得到的错误代码

System.BadImageFormatException: impossible to load the file or assembly '6632 bytes loaded from quick test 2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. Attempt to load a program in a bad format.
Nome file: '6632 bytes loaded from quick test 2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' ---> System.BadImageFormatException: Format IL not correct.
   in System.Reflection.Assembly.nLoadImage(Byte[] rawAssembly, Byte[] rawSymbolStore, Evidence evidence, StackCrawlMark& stackMark, Boolean fIntrospection)
   in System.Reflection.Assembly.Load(Byte[] rawAssembly)
   in quick_test_2.Form1.button2_Click(Object sender, EventArgs e) in C:\Users\HHH\Documents\Visual Studio 2010\Projects\quick test 2\quick test 2\Form1.cs:riga 175
   in System.Windows.Forms.Control.OnClick(EventArgs e)
   in System.Windows.Forms.Button.OnClick(EventArgs e)
   in System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   in System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   in System.Windows.Forms.Control.WndProc(Message& m)
   in System.Windows.Forms.ButtonBase.WndProc(Message& m)
   in System.Windows.Forms.Button.WndProc(Message& m)
   in System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   in System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   in System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

当我尝试加载一个简单的 Windows 窗体应用程序(.net c#)

我使用的代码是这个

try 
{
    Assembly myAsm = Assembly.Load(File.ReadAllBytes("myFile.exe"));
    MethodInfo myMethod = assm.EntryPoint;
    object myObj = assm.CreateInstance(myMethod.Name);
    myMethod.Invoke(o, null);
}
catch 
{
    //error
}

到目前为止,我只设法使它适用于我删除表单并从 Program.cs 中的 [STAThread] 运行代码的表单应用程序,它甚至不适用于简单的控制台应用程序。

对此有任何见解吗?

4

3 回答 3

1

您加载的程序集是否为与主机 exe 相同的 CPU 架构构建(x86 与 x64)?如果主机程序集设置为“任何 CPU”并且加载的程序集设置为 x86,这将在 64 位计算机上导致问题。

于 2013-03-12T22:23:13.380 回答
0

我确实认为问题在于调用应用程序本身就是一个 winform 应用程序。我从一个简单的 [Stathread] 手动启动该程序并且它工作正常。我不知道这算不算解决

于 2013-03-12T23:33:19.683 回答
0

当您更改 .csproj 的目标框架并将其恢复为您开始使用的框架时,通常会发生这种情况。在您疯狂尝试搜索正确的解决方案之前,请确保:

  1. 检查 app.config 中启动标记下是否supportedRuntime version="a different runtime from cs project target"。

  2. 这也意味着检查可能是属性文件夹中的其他自动生成或其他文件,以查看这些文件与 .csproj 文件中定义的文件之间是否没有更多的运行时不匹配。

在您开始尝试使用项目属性进行不同的操作以克服错误之前,这些可能会为您节省大量时间。

于 2013-04-11T10:16:44.550 回答