BadImageFormatExeption

Jan 28, 2011 at 8:14 PM
Edited Jan 28, 2011 at 8:15 PM

Hi all,

I am new to this and try to create a windows forms apllication that uses Pcap.Net.

I just started by creating a new project and adding the references to the five dlls which are stored in a subdirectory .

Now i modified the sample code for getting the device list and added this to the click event of a button. The whole form code looks like this:

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using PcapDotNet.Core;
using PcapDotNet.Analysis;
using PcapDotNet.Base;
using PcapDotNet.Packets;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // Retrieve the device list from the local machine
            IList<LivePacketDevice> allDevices = LivePacketDevice.AllLocalMachine;

            if (allDevices.Count == 0)
            {
                label1.Text = "No interfaces found! Make sure WinPcap is installed.";
                return;
            }

            // Print the list
            for (int i = 0; i != allDevices.Count; ++i)
            {
                LivePacketDevice device = allDevices[i];
                label1.Text = "" + (i + 1) + ". " + device.Name;
                if (device.Description != null)
                    label1.Text += " (" + device.Description + ")";
                else
                    label1.Text += " (No description available)";
            }
        }
    }
}

 

When I do a debug run, I get an Error message after clicking the button (sorry, it's German):

 

System.BadImageFormatException wurde nicht behandelt.
  Message=Die Datei oder Assembly "PcapDotNet.Core, Version=0.8.0.40959, Culture=neutral, PublicKeyToken=4b6f3e583145a652" oder eine Abh�ngigkeit davon wurde nicht gefunden. Es wurde versucht, eine Datei mit einem falschen Format zu laden.
  Source=Netreader
  FileName=PcapDotNet.Core, Version=0.8.0.40959, Culture=neutral, PublicKeyToken=4b6f3e583145a652
  FusionLog==== Zustandsinformationen vor Bindung ===
LOG: Benutzer = Garvin-PC\Garvin
LOG: DisplayName = PcapDotNet.Core, Version=0.8.0.40959, Culture=neutral, PublicKeyToken=4b6f3e583145a652
 (Fully-specified)
LOG: Appbase = file:///C:/Users/Garvin/documents/visual studio 2010/Projects/Netreader/Netreader/bin/Debug/
LOG: Urspr�nglicher PrivatePath = NULL
Aufruf von Assembly : Netreader, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
===
LOG: Diese Bindung startet im default-Load-Kontext.
LOG: Es wurde keine Anwendungskonfigurationsdatei gefunden.
LOG: Die Hostkonfigurationsdatei wird verwendet: 
LOG: Die Computerkonfigurationsdatei von C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config wird verwendet.
LOG: Verweis nach der Richtlinie: PcapDotNet.Core, Version=0.8.0.40959, Culture=neutral, PublicKeyToken=4b6f3e583145a652
LOG: Download von neuem URL file:///C:/Users/Garvin/documents/visual studio 2010/Projects/Netreader/Netreader/bin/Debug/PcapDotNet.Core.DLL.
ERR: Das Setup der Assembly konnte nicht abgeschlossen werden (hr = 0x8007000b). Die Suche wurde beendet.

  StackTrace:
       bei WindowsFormsApplication1.Form1.button1_Click(Object sender, EventArgs e)
       bei System.Windows.Forms.Control.OnClick(EventArgs e)
       bei System.Windows.Forms.Button.OnClick(EventArgs e)
       bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
       bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       bei System.Windows.Forms.Control.WndProc(Message& m)
       bei System.Windows.Forms.ButtonBase.WndProc(Message& m)
       bei System.Windows.Forms.Button.WndProc(Message& m)
       bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
       bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       bei System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
       bei System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
       bei System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
       bei System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
       bei System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
       bei System.Windows.Forms.Application.Run(Form mainForm)
       bei WindowsFormsApplication1.Program.Main() in C:\Users\Garvin\documents\visual studio 2010\Projects\Netreader\Netreader\Program.cs:Zeile 18.
       bei System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       bei System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       bei Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       bei System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
       bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       bei System.Threading.ThreadHelper.ThreadStart()
  InnerException: 

 

So what's wrong with my code?

 

Thanks in advance!

garv3

Jan 29, 2011 at 5:59 AM

Hey garv,

your code was okay. please add the xml manifest files PcapDotNet.Core.xml and other to the assemblies.
they are necessary dependencies and you get a BadImageFormatException without.

Sebastian

 

Coordinator
Jan 29, 2011 at 7:54 AM

Make sure you use the correct dlls.

If you have a 64 bit operating system use the x64 dlls.

If you have a 32-bit operating system use the x86 dlls.

Jan 29, 2011 at 10:55 AM

Hey Sebastian,

thank you for the answer. I will have a look at it when I am back home (currently sitting in the university).

@brickner: I am using the right one (x64).

Apr 13, 2011 at 11:54 AM

Hallo!

Ich hatte das selbe Problem: 64Bit OS x64 dlls.
Also habe ich einfach mal die x86er ausprobiert und siehe da, es funktioniert.

Klingt zwar komisch ist aber so.

Viele Grüße
André

 

Now for the not German ;o)

I had the same Problem on my Win7 64 bit OS using the x64 dlls.
So I tried the x86 ones and it worked.

Strange but true ...