C# 应用程序在VisualStudio的单元测试中以x86的形式运行,但在单独运行时以x64的形式运行

C# 应用程序在VisualStudio的单元测试中以x86的形式运行,但在单独运行时以x64的形式运行,c#,.net,visual-studio,anycpu,C#,.net,Visual Studio,Anycpu,这行代码 Environment.Is64BitProcess 当我的应用程序独立运行时,计算结果为true 但在VisualStudio的单元测试中运行时,同一表达式的计算结果为false 我选择了“任意CPU”作为解决方案平台,机器是64位的 为什么会这样 即使我像上图那样设置它,Resharper仍然以x86运行它,这基本上说明单元测试运行程序是以32位进程启动的。如何配置将取决于您使用的单元测试运行程序(有很多) 当您运行单元测试时,与单元测试运行程序的配置相比,您的应用程序程序集在

这行代码

Environment.Is64BitProcess
当我的应用程序独立运行时,计算结果为true

但在VisualStudio的单元测试中运行时,同一表达式的计算结果为false

我选择了“任意CPU”作为解决方案平台,机器是64位的

为什么会这样


即使我像上图那样设置它,Resharper仍然以x86运行它,这基本上说明单元测试运行程序是以32位进程启动的。如何配置将取决于您使用的单元测试运行程序(有很多)

当您运行单元测试时,与单元测试运行程序的配置相比,您的应用程序程序集在体系结构方面的任何偏好都将被忽略,而当您独立运行时,构建配置(例如,“AnyCPU首选x86”或“AnyCPU”)将是相关的


如果你真的,真的需要你的单元测试在x64中运行,你应该看看你是如何运行它们的-如果你不能改变它们在VS中的运行方式,您至少可以在一个独立的运行程序中运行它们,这样可以更容易地支持x64。

VS 2013:Tests->Tests Settings->Default Processor Architecture->x64应该选择x64作为默认VS test runner。对于较旧的once设置,可以在其他位置-@Alexei,是的,选择了该选项,但Resharper unit test runner仍在x86中运行我的测试项目,即使测试项目设置为64位机器上的任何cpu。在resharper设置中,我根据测试项目的目标选择了默认的平台体系结构作为自动的platform@CuiPengFei默认情况下,“任何CPU”都带有“首选32位”-确保它没有设置-@AlexeiLevenkov,是的,但这仅适用于vs 2015中的.net4.5+,对吗?我正在使用.net4。该选项为灰色。@CuiPengFei VS2012+,但该选项仅适用于EXE(因为DLL从其进程继承位)。如果您需要x64-请仅使用DLL x64,或确保将加载DLL的进程/测试运行程序配置为运行x64(而不是尝试“检测”/“默认设置任何内容”)@Luaan实际上没有关系。VS可以很好地运行/调试x86和x64进程。默认的测试运行程序也可以在x64模式下运行(只要配置为这样)。@Luaan最初的评论是关于VS is x86的关系-我试图强调的是,作为x86进程确实会阻止VS处理x64进程。现在,由于原来的评论不见了,我的两个评论都将在10…9。。。