2011-04-06 74 views
41

我有一个必须在x64模式下运行的C#应用​​程序。问题是我尝试创建在x64应用程序中运行方法的单元测试,并且单元测试项目甚至不会构建。它在尝试构建时遇到以下错误。如何获得在x64平台上运行的单元测试

错误加载C:..... \ BIN \ 64 \调试.... UnitTests.dll:无法加载 测试容器“C:..... \ BIN \ 64 \调试.... UnitTests.dll“或其一个 的依赖关系。如果将测试项目组件构建为64 位组件,则无法加载。当您构建测试项目 程序集时,请为该平台选择“任何CPU”。要在64位处理器上以64位 位模式运行测试,必须在 “主机”选项卡中更改测试设置,才能在32位进程中运行测试。错误详细信息: 无法加载文件或程序集 'file:/// C:........ UnitTests \ bin \ x64 \ Debug .... UnitTests.dll'或 其依赖项之一。试图加载一个 格式不正确的程序。

我试图将单元测试更改为x64和任何CPU,但仍然无法让它运行。有没有解决这个问题?

+0

下默认的目标平台,请问您的单元测试库都只能是x86的介绍信吗? – Tejs 2011-04-06 19:16:08

回答

36

我假设你使用Visual Studios测试框架,因为你没有提及其他。 在VS2010中,您可以强制测试主机以x64运行。 将您的程序集构建为任何CPU或x64,然后将测试主机设置为x64。

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

+0

是的,对不起,这是Visual Studio 2010 – 2011-04-06 20:02:25

+1

很好的答案,并解决了我的问题。我不得不做更多的事情来解决这个问题。 http://stackoverflow.com/questions/2314887/mstest-no-tests-are-run-because-no-tests-are-loaded-or-the-selected-tests-are-d – 2011-04-06 20:13:44

+0

哎呦忘了解释我什么不得不做。我必须按照此处所述将设置更改为配置管理器中的任意CPU。 “你需要确保装配正在建造中。在我的情况下,这个错误是由于以下情况的组合:(a)在“配置管理器”中,“构建”按钮没有打勾(b)所有其他组件都设置为x32,这个设置为“配置管理器”中的“任何CPU”(c)它抱怨说它需要一个已签名的程序集,所以我需要在项目属性中设置“ – 2011-04-06 20:15:17

1

我有类似的问题。 Visual Studio 2010中存在一个奇怪的问题(在x64下),这会导致在将新项目添加到现有解决方案时更改目标CPU。你确定所有的引用和CPU目标都是x64吗?

0

您将需要测试项目的所有引用设置为本地(设置为true)。我之前得到了这个问题,希望它也能适用于你(我使用的是Windows 7 64位+ VS2012)

0

如果清除并重建所有相关组件,则可以修复此错误。必须有一个文件意外损坏。

VS有一点需要改进,就是当检测到坏格式异常时,请报告文件名。然后开发人员只能重建该文件。

38

在VS 2012以上,你可以选择从Test菜单Test Settings|Default Processor Architecture

Visual Studio Test Settings

+2

_That_是我错过的复选标记。我通过测试人员和测试项目的项目属性搜索了所有年龄,并且归结为单击测试设置中的复选标记...§$%&#*! – 2015-11-17 07:10:40

+0

如果使用Resharper的单元测试运行器,请检查它的平台:http://stackoverflow.com/a/34517992/40422 – 2017-05-04 13:30:57