54

I have a C# application that must run in x64 mode. The problem is I try to create unit tests that run methods in the x64 application and the unit test project won't even build. I get the following error when it tries to build.

Error loading C:.....\bin\x64\Debug....UnitTests.dll: Unable to load the test container 'C:.....\bin\x64\Debug....UnitTests.dll' or one of its dependencies. If you build your test project assembly as a 64 bit assembly, it cannot be loaded. When you build your test project assembly, select "Any CPU" for the platform. To run your tests in 64 bit mode on a 64 bit processor, you must change your test settings in the Hosts tab to run your tests in a 32 bit process. Error details: Could not load file or assembly 'file:///C:.....UnitTests\bin\x64\Debug....UnitTests.dll' or one of its dependencies. An attempt was made to load a program with an incorrect format.

I have tried to change the unit test to x64 and also Any CPU and still cannot get it to run. Is there any fix for this?

ajeh
  • 2,652
  • 2
  • 34
  • 65
RJ.
  • 3,173
  • 4
  • 35
  • 44

7 Answers7

66

In VS 2012 and above you can select the default target platform from Test menu under Test Settings|Default Processor Architecture

Visual Studio Test Settings

Sten Petrov
  • 10,943
  • 1
  • 41
  • 61
41

I'm assuming that you are using Visual Studios testing framework since you mention no other. In VS2010 you can force the testing host to run in x64. Build your assemblies as Any CPU or x64 then set the test host to x64.

http://msdn.microsoft.com/en-us/library/ee782531.aspx

Robert Jeppesen
  • 7,837
  • 3
  • 35
  • 50
  • Yes, sorry, it is Visual Studio 2010 – RJ. Apr 06 '11 at 20:02
  • 1
    great answer and solved my problem. I had to do one more thing to get it to work that is explained here. http://stackoverflow.com/questions/2314887/mstest-no-tests-are-run-because-no-tests-are-loaded-or-the-selected-tests-are-d – RJ. Apr 06 '11 at 20:13
  • Whoops forgot to explain what I had to do. I had to change the setting to Any CPU in the configuration manager as stated here. "You need to ensure the assembly is being built. In my case, this error was due to a combination of the following: (a) in the "Configuration Manager", the "build" button wasn't ticked (b) all other assembles were set to x32, this one was set to "Any CPU" in the "Configuration Manager" (c) it was complaining that it needed an assembly signed so I needed to set this in the project properties" – RJ. Apr 06 '11 at 20:15
  • Make sure you don't have x86 reference assemblies when you build for x64. – AlexandruC Jul 01 '16 at 11:31
  • Is it possible to do the same for the nunit3-console.exe? – J4N Sep 07 '17 at 09:31
1

I had a similar issue. There is a strange issue in Visual Studio 2010 (under x64), which causes the target CPU to be changed when you add a new project to the existing solution. Are you sure that all references and CPU targets are x64?

Svetlin Ralchev
  • 614
  • 6
  • 5
1

For nunit3 only for users who prefer dotnet test

This work for both .NETcore and .NETFramework projects

dotnet test -- RunConfiguration.TargetPlatform=x64
Chui Tey
  • 5,436
  • 2
  • 35
  • 44
0

You will need to set all references of the test project to local (set to true). I got this problem before, hope that it will work for you too (I'm using windows 7 64 bit + VS2012)

thienhaflash
  • 79
  • 1
  • 9
0

This error can be fixed if you clean and rebuild all of the relevant assemblies. There must be one file corrupted unexpectedly.

One thing for VS to improve, is when the bad format exception is detected, please report the file name. Then the developer can only rebuild that file.

Cary
  • 372
  • 1
  • 5
  • 14
0

I have had the same issue, Add App.config file

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
</configuration>